2014-02-14 2 views
2

Grails AWS 플러그인 : https://github.com/grails-aws/grails-aws을 Grails 2.2.2에서 사용하고 있습니다. 기본 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'