开发者社区> 问答> 正文

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-05-31 21:29:46 630 0
1 条回答
写回答
取消 提交回答
  • webApp.setWar(webAppDir);
    这个貌似不是war文件,所以应该换个方法……比如setResourceBase……你懂得
    感谢@JFinal 敬礼 ######发现jetty源码里面应该setWar兼容setResourceBase的。你再看看你那个路径是不是写错了?######上次发给你的 JFinal 新版本不是已经用的 setBaseResource(...)了吗? 如果没有,找我拿一个最新版本######新版本什么时候发布啊?  ######据小道消息说是最近哈哈######./ 强势围观、 希望能以简洁为准

    2020-05-31 21:29:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
使用TensorFlow搭建智能开发系统自劢生成App UI代码 立即下载
APP加固新方向 --混淆和瘦身 立即下载