能正常运行的jfinal项目在用maven打包时报错
以前一直用eclipse的导出war包,可正常在tomcat下运行
昨天将项目转成maven管理的后,用maven install会报错,异常如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project_name: Compilation failure
[ERROR] /D:/git/project_name/src/com/jfinal/plugin/activerecord/Model.java:[501,32] 不兼容的类型: com.jfinal.plugin.activerecord.Model无法转换为M
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
引用来自“JFinal”的评论
刚看了一下 jfinal 1.9 的 Model 的 503 行代码:return findById(id, "*"); 改成 return (M)findById(id, "*");
应该就可以了。其实这个 findById(String) 方法转调了 findById(String, String) 方法,而后者返回的是泛型,是正确的代码,而有些 maven 版本有 bug,无法正确识别更深层次的泛型传递。
刚看了一下 jfinal 1.9 的 Model 的 503 行代码:return findById(id, "*"); 改成 return (M)findById(id, "*");
应该就可以了。其实这个 findById(String) 方法转调了 findById(String, String) 方法,而后者返回的是泛型,是正确的代码,而有些 maven 版本有 bug,无法正确识别更深层次的泛型传递。
嗯 现在eclipse打war包还是可以的,原来是想转maven方便维护,没想到maven也有不少坑。。
是否用的最新版本的 jfinal 1.9? 看错误提示原因是该 maven 版本对com.jfinal.plugin.activerecord.Model泛型检测没有通过。解决办法可以是换 maven版本或者在编译时提供相关的参数。
最简单快捷的办法是用 eclipse 的 export 功能导出 war 包,项目上线以后再回头再解决 maven 的问题
用的是jdk 1.8
看看JDK引用版本什么的对不? 猜的