【问题标题】:amazon AWS in web app, InstantiationError: com.amazonaws.handlers.bWeb 应用程序中的亚马逊 AWS,InstantiationError: com.amazonaws.handlers.b
【发布时间】:2011-06-09 07:36:41
【问题描述】:

我正在尝试在 java web 应用程序中使用亚马逊 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 中不存在......而且我在其他任何地方都找不到对它的任何引用。

edit:更正,request.handlers在JAR里,但是S3下的版本是空的。不知道“b”是从哪里来的。

编辑:删除 tomcat 标记,因为我在 glassfish 上尝试了相同的结果。请注意,它确实在 java SE 环境中工作。

【问题讨论】:

  • 应该有更多的输出。也许是一些“由”引起的?
  • 发布的异常是根本原因。在任何日志中仅此而已。

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


【解决方案1】:

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

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

我无法解释为什么 AWS jar 在此设置方面存在问题。当我通过 netbeans (6.9.1) 创建一个新的 web 应用程序项目时,它默认设置为 true。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      相关资源
      最近更新 更多