2011-01-14 58 views
0

我想在一個java web應用程序中使用亞馬遜AWS,在Apache Tomcat中運行。當我運行我的應用程序,它失敗,亞馬遜AWS的Web應用程序,InstantiationError:com.amazonaws.handlers.b

java.lang.InstantiationError: com.amazonaws.handlers.b 
    com.amazonaws.services.s3.AmazonS3Client.<init>(Unknown Source) 
    com.amazonaws.services.s3.AmazonS3Client.<init>(Unknown Source) 
    org.test.msync.photoweb.PhotoWebServlet.processRequest(PhotoWebServlet.java:47) 
    org.test.msync.photoweb.PhotoWebServlet.doGet(PhotoWebServlet.java:104) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

任何想法?

看着爲AmazonS3Client的代碼,這似乎是試圖加載一個名爲「request.handlers」資源,這並不在SDK罐子存在......我無法找到任何提及任何其他地方。

編輯:校正,request.handlers在JAR中,但S3下的版本是空的。不知道「b」來自哪裏。

編輯:刪除tomcat標籤,因爲我試過玻璃魚與相同的結果。注意它在java SE env中有效。

+0

應該有更多的輸出。也許一些「造成」? – davogotland 2011-01-14 18:01:05

回答

-1

我在context.xml中關閉「antiLockingJARs」和問題走了。

If true, the Tomcat classloader will take extra measures to avoid JAR file locking when resources are accessed inside JARs through URLs. This will impact startup time of applications, but could prove to be useful on platforms or configurations where file locking can occur. If not specified, the default value is false.

我無法解釋爲什麼AWS jar在此設置中遇到問題。當我通過netbeans(6.9.1)創建一個新的Web應用程序項目時,它默認設置爲true。

-1

它在java se環境中工作的事實應該告訴我們這是一個類路徑問題。這意味着錯誤來自類路徑中缺少的類,可能是名爲b的類。你是如何部署你的tomcat的?你是如何在java se運行的版本?通過日食?你是否也在eclipse上運行tomcat?我猜你錯過了tomcat類路徑上的一些jar文件。將缺少的jar文件放在tomcat運行該應用程序的文件夾中,在WEB-INF/lib下,應該修復這個問題。這個文件夾的位置取決於你的設置。

如果這樣沒有幫助,那麼請給你的設置的更多信息,既爲tomcat的執行和Java SE :)