在lib目录中找不到Grails JAR文件

5
我有一个Java类,位于src/java中,引用了外部JAR包中的类。我将JAR文件复制到了lib目录下。当我使用grails run-app运行应用程序时,会出现找不到导入的类的错误。
对于Grails项目,正确的JAR文件存放位置是什么?是否有某些特殊的命令可以让Grails识别新添加的JAR文件?
我在OS X上使用Java 1.6.0_29和Grails 2.0.0运行。
跟进:这些JAR文件来自于Apache HttpComponents。更具体地说:
commons-codec-1.4.jar
commons-logging-1.1.1.jar
httpclient-4.1.2.jar
httpclient-cache-4.1.2.jar
httpcore-4.1.2.jar
httpmime-4.1.2.jar

它们中的类文件被编译为Java 1.3,这不应该是一个问题。

~/temp/org/apache/http $ file HttpResponse.class 
HttpResponse.class: compiled Java class data, version 47.0 (Java 1.3)
3个回答

13

非常奇怪,我运行了grails clean 然后 运行了 grails run-app,它编译和运行都很好。


我仍然有问题...使用grails 2.0.3 - Philippe
你把这个 jar 包加入了构建路径吗? - k-deux
我也试过了,Grails 2.2.4。谢谢。 - xagyg

6

lib 中添加或删除 jar 文件后,需要运行以下命令:

grails compile --refresh-dependencies

为了让Grails注意到这些更改,请按照以下步骤操作。

5

添加 jar 包的正确方法是将其添加到 "BuildConfig.groovy" 文件中。你可以指定它是否在编译时、运行时等需要。例如:

dependencies {        
        build 'org.apache.httpcomponents:httpcore:4.1.2' 
        build 'org.apache.httpcomponents:httpclient:4.1.2' 
        runtime 'org.apache.httpcomponents:httpcore:4.1.2'
        runtime 'org.apache.httpcomponents:httpclient:4.1.2'
} 

请注意,为了解决依赖关系,您可能还需要取消注释Buildconfig.groovy中的mavenCentral()行。
请参见此处的“依赖关系解析”部分。

从Grails 2.0.0开始,默认情况下取消注释mavenCentral() :) - rlovtang
我也遇到了同样的问题。即使我将我的jar文件放在项目lib文件夹中,它仍然无法加载:-( 如果我想添加自己的jar文件,但它不在maven中央库中怎么办? - K. Siva Prasad Reddy
经过几个小时的奋斗(至少如此),您的答案,特别是文档链接,拯救了我。+1,谢谢! - Madbreaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接