0

我试图将一些 Java 库(AWS SDK for Java、Apache Commons Math 等)添加到我的 Grails 项目中,因为我的一些 Java 源代码(位于 src/java 中)具有依赖项。通过遵循这个答案,我能够通过将 jar 文件添加到 /lib 文件夹并将其添加到构建路径来解决编译错误,如此处所回答:将 Java 库添加到 Netbeans Grails 项目

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

4

2 回答 2

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'
}

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

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

于 2013-07-02T19:40:39.170 回答
0

我的问题原来是 AWS Java SDK 具有尚未安装且我不知道的依赖项(Apache HTTP 客户端)。

这是我必须为我的 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 设置。

于 2013-07-03T16:08:21.147 回答