开发者社区> 问答> 正文

JFinal.start()如何用非当前项目的工作目录作为部署目录?:报错

JFinal.start(String webAppDir, int port, String context, int scanIntervalSeconds)

jfinal.start方法是利用当前工作空间作为部署目录,并且监控当前项目的WebRoot/WEB-INF/classes下文件变化来热加载的。


比如我有eclipse有两个项目,一个是jfinal-generator一个是demo.
我想在jfinal-generator这个项目里面通过一个main方法启动demo。

如果是在jfinal-generator中启动下面代码
JFinal.start(“WebRoot", 8080, "/generator", 5);

假如加载的是/home/kid/workspace/jfinal-generator/WebRoot下的内容,那么监控的是/home/kid/workspace/jfinal-generator/WebRoot/WEB-INF/classes下的classes变化

监控文件变化的目录可以通过修改以下代码实现

// configureScanner
if (scanIntervalSeconds > 0) {

Scanner scanner = new Scanner("新增一个参数传入", scanIntervalSeconds) {
public void onChange() {
try {
System.err.println("Loading changes ......");
webApp.stop();
webApp.start();
System.err.println("Loading complete.\n");
} catch (Exception e) {
System.err.println("Error reconfiguring/restarting webapp after change in watched files");
e.printStackTrace();
}
}
};
那么怎么设置webAppDir,才能做到在jfinal-generator中启动demo这个项目呢?

源代码相关部分如下

webApp = new WebAppContext();
		webApp.setContextPath(context);
		webApp.setWar(webAppDir);
		webApp.setInitParameter("dirAllowed", "false");
		webApp.setInitParameter("useFileMappedBuffer", "false");	// web.setInitParams(Collections.singletonMap("org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false"));
		server.setHandler(webApp);

似乎用到weAppdir这个变量就这里

webApp.setWar(webAppDir)

JFinal.start("WebRoot", 8080, "/demo", 5);
这样是加载的本项目而不能加载到demo这个项目。

但若我设置为绝对路径也无效

JFinal.start("/home/workspace/kid/demo/WebRoot", 8080, "/demo", 5);

会java.io.FileNotFoundException: /home/workspace/kid/demo/WebRoot.



展开
收起
kun坤 2020-06-12 22:21:42 370 0
1 条回答
写回答
取消 提交回答
  • webApp.setWar(webAppDir);

    这个貌似不是war文件,所以应该换个方法……比如setResourceBase……你懂得

    感谢@JFinal 敬礼

    ######发现jetty源码里面应该setWar兼容setResourceBase的。你再看看你那个路径是不是写错了?######上次发给你的 JFinal 新版本不是已经用的 setBaseResource(...)了吗? 如果没有,找我拿一个最新版本######新版本什么时候发布啊?  ######据小道消息说是最近哈哈###### ./ 强势围观、 希望能以简洁为准
    2020-06-12 22:21:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
前端自动化测试 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
使用TensorFlow搭建智能开发系统自劢生成App UI代码 立即下载