0

我使用 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

但没有任何帮助。在结果战争文件中,我可以在 WEB-INF/lib 中看到这个库,但即使部署这个战争我也会得到同样的错误。

如何解决?

4

1 回答 1

3

你混淆NoClassDefFoundErrorClassNotFoundException. ClassNotFoundException当您想要的课程不存在时发生,但是NoClassDefFoundError当课程存在时您会得到一个,但它所依赖的课程不存在。因此,您缺少该 jar 文件所依赖的另一个 jar 文件。

这是为什么最好使用依赖管理而不是手动将 jar 文件复制到 lib 目录的众多原因之一。如果您使用 Maven 存储库,其中 jar 具有适当的 POM 文件,它们的依赖项会被指定,并且解析器可以为您下载整个依赖关系树,而不必自己查找所有 jar。

于 2013-07-28T14:57:28.753 回答