可能是JFinal 2.2的一个bug?
@JFinal 你好,想跟你请教个问题:
使用Tomcat + Maven的方式, 同样的代码在2.0可以启动成功,在2.2就启动失败~
代码如下:
package mycompany.project.main; import java.io.File; import java.nio.file.Paths; import org.elasticsearch.client.Client; import com.jfinal.config.Constants; import com.jfinal.config.Handlers; import com.jfinal.config.Interceptors; import com.jfinal.config.JFinalConfig; import com.jfinal.config.Plugins; import com.jfinal.config.Routes; import com.jfinal.ext.handler.ContextPathHandler; import com.jfinal.kit.PathKit; import com.jfinal.kit.PropKit; import com.jfinal.plugin.redis.RedisPlugin; import mycompany.project.constants.SAConstants; import mycompany.project.utils.ESUtils; import mycompany.project.utils.MiscUtils; public class DefaultConfig extends JFinalConfig { // 定义一个ElasticSearch的client,后面共用 public static Client ES_CLIENT = null; @Override public void configConstant(Constants me) { me.setDevMode(true); me.setEncoding("UTF-8"); me.setFreeMarkerTemplateUpdateDelay(0); File propFile = Paths.get( PathKit.getRootClassPath(), "app.properties").toFile(); System.out.println("PropFile :" + propFile.exists()); loadPropertyFile(propFile); ES_CLIENT = ESUtils.initEsClient(); } @Override public void configRoute(Routes me) { } @Override public void configPlugin(Plugins me) { // this redis is used to store skyaid related content String REDIS_HOST = PropKit.get("redis_host"); RedisPlugin bbsRedis = new RedisPlugin(SAConstants.REDIS_CACHENAME, REDIS_HOST); me.add(bbsRedis); } @Override public void configInterceptor(Interceptors me) { } @Override public void configHandler(Handlers me) { // TODO Auto-generated method stub me.add(new ContextPathHandler("ctx_path")); // <base href="${ctx_path}/"/> in page } @Override public void beforeJFinalStop() { if(ES_CLIENT != null) { ES_CLIENT.close(); ES_CLIENT = null; } super.beforeJFinalStop(); } }
错误提示:
java.lang.IllegalStateException: Load propties file by invoking PropKit.use(String fileName) method first.但是在loadProperty之前打印的语句已经提示可以找到文件了~
这是遇到错误的时候pom 关于jfinal的部分:
<dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>2.2</version> </dependency>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
jfinal 自开源以后,用户量一直猛增,而用户的场景数越来越多,需求也越来越多,反馈越来越多就多,发布版本必定也会多。有生命力的项目必定是一直进化发展的,没有终点
引用来自“JFinal”的评论
这个是 jfinal 2.1 版本改进后的功能,JFinalConfig.loadPropertyFile(...) 方法中不再使用 PropKit.use(...) 来加载属性文件,相当于一个解耦合的改进,详见 jfinal 2.1 发布的 changelog 第 30 条:http://www.oschina.net/news/69461/jfinal-2-1-released
解决方法极度简单,如果前面使用 loadPropertyFile(...),则后续一直使用 getXxx(...)。如果前面使用的 PropKit.use(...),则后续才可以使用 PropKit.getXxx(...)
非常感谢! 大爱Jfinal 哈哈
这个是 jfinal 2.1 版本改进后的功能,JFinalConfig.loadPropertyFile(...) 方法中不再使用 PropKit.use(...) 来加载属性文件,相当于一个解耦合的改进,详见 jfinal 2.1 发布的 changelog 第 30 条:http://www.oschina.net/news/69461/jfinal-2-1-released
解决方法极度简单,如果前面使用 loadPropertyFile(...),则后续一直使用 getXxx(...)。如果前面使用的 PropKit.use(...),则后续才可以使用 PropKit.getXxx(...)