能正常运行的jfinal项目在用maven打包时报错

sunstar356 发布于 2015/04/10 10:34
阅读 856
收藏 0

以前一直用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


检查了下代码,所有继承了Model类的domain都在config中注册了arp.addMapping,请问这是什么原因造成的, @jfinal

加载中
0
楊家家主
楊家家主
看看JDK引用版本什么的对不? 猜的
sunstar356
sunstar356
用的是jdk 1.8
0
JFinal
JFinal

     是否用的最新版本的 jfinal 1.9? 看错误提示原因是该 maven 版本对com.jfinal.plugin.activerecord.Model泛型检测没有通过。解决办法可以是换 maven版本或者在编译时提供相关的参数。

    最简单快捷的办法是用 eclipse 的 export 功能导出 war 包,项目上线以后再回头再解决 maven 的问题

sunstar356
sunstar356
嗯 现在eclipse打war包还是可以的,原来是想转maven方便维护,没想到maven也有不少坑。。
0
JFinal
JFinal
       刚看了一下 jfinal 1.9 的 Model 的 503 行代码:return findById(id, "*");  改成 return (M)findById(id, "*"); 应该就可以了。其实这个 findById(String) 方法转调了 findById(String, String) 方法,而后者返回的是泛型,是正确的代码,而有些 maven 版本有 bug,无法正确识别更深层次的泛型传递。
0
sunstar356
sunstar356

引用来自“JFinal”的评论

       刚看了一下 jfinal 1.9 的 Model 的 503 行代码:return findById(id, "*");  改成 return (M)findById(id, "*"); 应该就可以了。其实这个 findById(String) 方法转调了 findById(String, String) 方法,而后者返回的是泛型,是正确的代码,而有些 maven 版本有 bug,无法正确识别更深层次的泛型传递。

谢谢回复。

原来用的不是1.9,根据错误定位到的是:

public M setAttrs(M model) {
return setAttrs(model.getAttrs());

}


换成1.9之后报错:[524,32] 不兼容的类型: com.jfinal.plugin.activerecord.Model无法转换为M

和原来在同样的位置

返回顶部
顶部