我使用Grails 2.2.3。我把jar文件放在lib目录下,IDEA立即解决了依赖。但是当我启动应用程序时,我从这个库获得NullPointerException
课程。如果我第二次或更多次尝试,我会得到java.lang.NoClassDefFoundError
。我找到了很多建议如何解决这个问题,但在我的案例中没有一个是有用的。
库(mylib-1.jar
)在maven中编译并添加到lib目录中。在BuildConfig.groovy
中,依赖关系被称为:
dependencies {
compile 'com.mylib:mylib:1'
}
我试过
grails clean
grails compile --refresh-dependencies
grails refresh-dependencies
但没有任何帮助。在结果war文件中,我可以在WEB-INF / lib中看到这个库,但是即使部署了这个war,我也会遇到同样的错误。
如何解决这个问题?
答案 0 :(得分:3)
您将NoClassDefFoundError
与ClassNotFoundException
混淆。 ClassNotFoundException
当你想要的课不存在时会发生,但是当课程在那里时你会得到NoClassDefFoundError
,但是它所依赖的课程不是。{1}}。所以你错过了这个jar文件依赖的另一个jar文件。
这是为什么最好使用依赖关系管理而不是手动将jar文件复制到lib目录的众多原因之一。如果您使用Maven repo,其中jar有适当的POM文件,则指定它们的依赖项,并且解析器可以为您下载整个依赖项树,而不是您必须自己找到所有的jar。