Grails Project在运行时缺少Java库

时间:2013-07-02 19:19:24

标签: grails libraries

我试图将一些Java库(AWS SDK for Java,Apache Commons Math等)添加到我的Grails项目中,因为我的一些Java源代码(放在src / java中)具有依赖性。通过以下答案,我能够通过将jar文件添加到/ lib文件夹并将其添加到构建路径来解决编译错误,如下所示:Add Java Libraries to a Netbeans Grails Project

但是,当我在运行时从控制器调用我的Java源代码时,它无法找到我添加的Java库,显示NoClassDefFoundError。我应该在BuildConfig.groovy文件中添加一些内容吗?我不确定将jar文件的名称约定添加到依赖项中。

2 个答案:

答案 0 :(得分:2)

您提到的问题是 5岁。您应该使用更新的资源:)

现在首选的方法是在BuildConfig.groovy中使用依赖项,让Grails(通过Ivy或Maven)为您下载一次jar并将其重用于各种项目。

语法并不总是很明显,我发现http://mvnrepository.com/是一个很好的资源。例如,如果你搜索" commons math"然后点击http://mvnrepository.com/artifact/org.apache.commons/commons-math,您会看到一些版本。单击版本2.2,您将看到Maven依赖XML,但您可以单击Gradle选项卡,它将与Grails所需的类似。所以我要添加

dependencies {
   compile 'org.apache.commons:commons-math:2.2'
}

并在必要时将compile更改为runtimebuild等,具体取决于您在构建过程中对jar的需求。

在极少数情况下,您确实有一个Maven仓库中没有的jar(例如贵公司的共享库),那么您可以将jar文件放在lib目录中。正如您所见,Grails没有自动检测它(从版本2.0开始)。但是您可以运行grails compile --refresh-dependencies将jar添加到类路径中。

答案 1 :(得分:0)

我的问题是AWS Java SDK具有尚未安装的依赖关系(Apache HTTP Client)并且我不知道的事实。

这是我必须为BuildConfig.groovy文件配置此文件

dependencies {
   runtime 'org.apache.httpcomponents:httpclient:4.2.5'
   runtime 'com.amazonaws:aws-java-sdk:1.4.7'
}

可以在此处找到AWS Java SDK 1.4.7的所有依赖项:http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk/1.4.7。已经为我安装了HTTP客户端之外的所有依赖项,但可能不适合您的Grails设置。