看到JFinal不错,今天特地来尝试一下,使用idea来做开发,悲剧就此产生……
1、写了一个简单的Controller,完全按照文档写的肯定没问题,结果死活就是404,而且是jetty渲染的那种404页面,不是JFinal渲染的那个404页面,说明Jetty成功启动了,但是,JFinal的Filter没有被加载,问题出在哪里呢???JFinal启动的时候需要传入4个参数:webAppDir,port,contextPath,scanInterval,后面三个参数肯定没问题,难道是webAppDir的路径给的不对?我在JFinal.start()调用之前特意touch了一个文件,结果才知道了idea下的workdir在哪里……修改参数,最后变成这样才可以:JFinal.start("src/main/webapp", 80, "/", 5);
2、修改了java文件没法自动load
这可是JFinal的一大特点,为啥到我这就不好使了呢?难道是JFinal的ClassLoader写的有问题?debug了一下代码,看上去没啥问题……既然监测逻辑没有问题,那就是输入有问题,对于这个监测逻辑的输入是什么?是我的classpath,即JFinal会去定时读取classpath的文件,看是否发生了变化,如果发生了变化load进来。我现在怀疑idea可能没有即时编译,于是……我启动webapp之后打开target/classes目录随便找了一个class看他的时间戳,OK,记录下来,过一分钟,修改源文件,再回来看,擦,时间戳没有发生变化……这说明我修改了java源文件了,但是idea没有给我即时编译到target目录,eclipse是可以的啊,难道idea真的不行?是不是有个配置开关没有打开,于是,我就Google啊,结果发现……idea确实不能自动编译,不过到了版本12之后可以了,需要配置一下,方法如下:
就是红线圈起来的两个选项,打开就可以自动编译了,但是,看到后面括号里的话我心凉了……
看来以后开发JFinal的项目还是用eclipse吧。。。