2014-02-14 54 views
2

我在Grails 2.2.2上使用Grails AWS Plugin:https://github.com/grails-aws/grails-aws。我无法使基本的S3文件上传工作。我收到以下错误:运行Grails AWS Plugin时出现ClassNotFoundException

错误日志:

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) 

这里是BuildConfig:

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 

感谢

+0

你有一个默认的桶指定?上面使用的关闭数据没有指定。 – dmahapatro

+0

@dmahapatro是的,我有一个在Config.groovy中指定的默认桶 – brwngrldev

+1

根据你的回答评论,它看起来像HTTPClient依赖冲突,因为[插件带来相同的依赖项](https://github.com /grails-aws/grails-aws/blob/master/grails-app/conf/BuildConfig.groovy#L24)。你可以运行一个'grails dependency-report'并查看这个特定的工件是否被破坏? – dmahapatro

回答

2

的Grails的AWS插件使用AWS SDK 1.6.7从Maven可以看出,这取决于Apache HttpClient 4.2。

请添加以下依赖你BuildConfig.groovy

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

实际上,应用程序正在使用基于我在依赖项报告中看到的HTTPClient 4.2。即使你的建议错误仍然存​​在。谢谢 – brwngrldev

+0

谢谢,让我走在正确的道路上 – brwngrldev

1

我终于能够得到它通过增加上班以下的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' 
相关问题