【问题标题】:ClassNotFoundException when running Grails AWS Plugin运行 Grails AWS 插件时出现 ClassNotFoundException
【发布时间】:2014-02-14 23:31:04
【问题描述】:

我在 Grails 2.2.2 上使用 Grails AWS 插件:https://github.com/grails-aws/grails-aws。我无法让基本的 S3 文件上传工作。我收到以下错误:

错误日志:

ERROR (SLF4JBridgeHandler.java:225) - Servlet.service() for servlet [default] in context with path [] threw exception [org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/http/params/SyncBasicHttpParams] with root cause
java.lang.ClassNotFoundException: org.apache.http.params.SyncBasicHttpParams
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.jets3t.service.utils.RestUtils.createDefaultHttpParams(RestUtils.java:574)
    at org.jets3t.service.utils.RestUtils.initHttpConnection(RestUtils.java:298)
    at org.jets3t.service.impl.rest.httpclient.RestStorageService.initHttpConnection(RestStorageService.java:209)
    at org.jets3t.service.impl.rest.httpclient.RestStorageService.initializeDefaults(RestStorageService.java:166)
    at org.jets3t.service.StorageService.<init>(StorageService.java:125)
    at org.jets3t.service.impl.rest.httpclient.RestStorageService.<init>(RestStorageService.java:153)
    at org.jets3t.service.S3Service.<init>(S3Service.java:91)
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(RestS3Service.java:157)
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(RestS3Service.java:131)
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(RestS3Service.java:109)
    at grails.plugin.aws.s3.S3FileUpload.inputStreamUpload(S3FileUpload.groovy:85)
    at grails.plugin.aws.util.MetaClassInjector$_injectS3UploadMethods_closure3.doCall(MetaClassInjector.groovy:46)

这是构建配置:

compile ":aws:1.6.7.5"

控制器:

file.inputStream.s3upload(newFilename) {
   path "pictures/"
}

所以这里没有什么特别的,只是基本的配置,但它不起作用。有什么想法吗?

UDPATE:

运行依赖关系报告以确保应用正在使用 HTTPClient 4.2,并且它是:

httpclient by org.apache.httpcomponents 4.2 4.1.2

谢谢

【问题讨论】:

  • 您是否指定了默认存储桶?上面使用的闭包数据没有指定。
  • @dmahapatro 是的,我在 Config.groovy 中指定了一个默认存储桶
  • 根据您对答案的评论,看起来 HTTPClient 依赖项正在发生冲突,因为 plugin brings in the same dependency.您能否运行grails dependency-report 并查看该特定工件是否受到损害?

标签: grails amazon-web-services amazon-s3


【解决方案1】:

Grails AWS 插件使用 AWS SDK 1.6.7,它依赖于 Apache HttpClient 4.2,正如您从 Maven 中得知的那样。

请将以下依赖项添加到您的BuildConfig.groovy

runtime 'org.apache.httpcomponents:httpclient:4.2'

【讨论】:

  • 实际上,根据我在依赖项报告中看到的内容,该应用正在使用 HTTPClient 4.2。即使有您的建议,错误仍然存​​在。谢谢
【解决方案2】:

我终于能够通过将以下内容添加到 BuildConfig.groovy 来让它工作:

build 'org.apache.httpcomponents:httpcore:4.2'
build 'org.apache.httpcomponents:httpclient:4.2'
runtime 'org.apache.httpcomponents:httpcore:4.2'
runtime 'org.apache.httpcomponents:httpclient:4.2'

【讨论】:

    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2013-04-26
    相关资源
    最近更新 更多