Web应用程序中的amazon AWS,InstantiationError:com.amazonaws.handlers.b

时间:2011-01-14 17:54:23

标签: java web-applications servlets amazon-web-services

我正在尝试在Java web应用程序中使用amazon AWS,在apache tomcat中运行。当我运行我的应用程序时,它失败了,

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 jar中不存在......我在其他地方找不到任何引用。

编辑:更正,request.handlers在JAR中,但S3下的版本为空。不知道“b”来自哪里。

编辑:删除tomcat标签,因为我尝试使用相同结果的glassfish。请注意,它确实可以在java SE环境中使用。

2 个答案:

答案 0 :(得分:-1)

它在java se环境中工作的事实应该告诉我们这是一个类路径问题。意味着错误来自类路径上缺少的类,可能是名为b的类。你是如何部署tomcat的?你是如何在java se中运行该版本的?通过日食?你是否也通过日食运行tomcat?我猜你在tomcat类路径上缺少一些jar文件。将缺少的jar文件放在tomcat运行应用程序的文件夹中,在WEB-INF / lib下,应该解决这个问题。这个文件夹的位置取决于您的设置。

如果这没有用,那么请提供有关tomcat执行和java se的设置的更多信息:)

答案 1 :(得分:-1)

我在Context.xml中关闭了“antiLockingJARs”,问题就消失了。

  

如果为true,则Tomcat类加载器将为   采取额外措施避免JAR文件   访问资源时锁定   通过URL在JAR内部。这将   影响应用程序的启动时间,   但可能证明是有用的   平台或配置文件   锁定可能发生。如果没有指定,   默认值为false。

我无法解释为什么AWS jar有这个设置的问题。默认情况下,当我通过netbeans(6.9.1)创建一个新的Web应用程序项目时,它被设置为true。