2017-05-02 431 views
5

使用Eclipse火星。我已经添加了通过AWS Java SDK的1.11.123安装从help.Now软件当我运行Tomcat服务器7我得到这个错误:无法初始化类com.amazonaws.partitions.PartitionsLoader

May 02, 2017 11:57:32 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [PdsServlet] in context with path [/PdsAWS] threw exception [java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.partitions.PartitionsLoader] with root cause java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.partitions.PartitionsLoader

我也得到

java.lang.NoSuchFieldError: ALLOW_FINAL_FIELDS_AS_MUTATORS

但是当我检查库,我可以看到PartitionsLoader.How可以这样解决?

enter image description here

更多的误差,这似乎与:

May 03, 2017 9:39:04 AM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException 
 
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container 
 
java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.partitions.PartitionsLoader 
 
\t at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30) 
 
\t at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:64) 
 
\t at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:52) 
 
\t at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:105) 
 
\t at com.amazonaws.services.s3.AmazonS3Client.createSigner(AmazonS3Client.java:3428) 
 
\t at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4156) 
 
\t at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4116) 
 
\t at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1700) 
 
\t at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1563) 
 
\t at com.tradingtechnologies.pdsawssql.aws.s3.S3HealthCheck.put(S3HealthCheck.java:83) 
 
\t at com.tradingtechnologies.pdsawssql.aws.s3.S3HealthCheck.put(S3HealthCheck.java:56) 
 
\t at com.tradingtechnologies.pdsawssql.aws.s3.S3HealthCheck.execute(S3HealthCheck.java:116) 
 
\t at com.tradingtechnologies.pdsawssql.sql.ext.HealthCheck.execute(HealthCheck.java:54) 
 
\t at com.tradingtechnologies.pdsservlet.HealthServlet.doGet(HealthServlet.java:31) 
 
\t at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source) 
 
\t at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
 
\t at java.lang.reflect.Method.invoke(Method.java:606) 
 
\t at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
 
\t at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) 
 
\t at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
 
\t at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
 
\t at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
 
\t at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
 
\t at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
 
\t at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) 
 
\t at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) 
 
\t at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) 
 
\t at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) 
 
\t at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
 
\t at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
 
\t at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
 
\t at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at com.tradingtechnologies.pdsservercommon.filters.HttpHeaderFilter.doFilter(HttpHeaderFilter.java:24) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 
 
\t at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 
 
\t at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 
 
\t at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
 
\t at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
 
\t at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 
 
\t at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
 
\t at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 
 
\t at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 
 
\t at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 
 
\t at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
 
\t at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
 
\t at java.lang.Thread.run(Thread.java:745)

回答

2

java.lang.NoSuchFieldError: ALLOW_FINAL_FIELDS_AS_MUTATORS

这听起来像是你从某处拾起旧版杰克逊。 PartitionsLoader在初始化静态成员字段时引用MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS。如果您在运行时拾取的MapperFeature版本没有此字段,则产生的异常将导致PartitionsLoader的类初始化过程失败。随后尝试引用该类将会抛出您所看到的异常。

在版本2.2中添加了ALLOW_FINAL_FIELDS_AS_MUTATORS。你选择哪个版本?

+0

我的aws_java_sdk有jackson版本2.6.6,在aws_java_sdk以外的库里有一个jackson版本2.1.2 .....可以这样吗?我怎么能确保aws_java_sdk选择内部的一个 – vks

+0

Thanx很多........这是它!!!!!!!!!!!!编译时间和运行时是differernt – vks

+0

嗨,那里,兴奋地相同问题。你能告诉我你是如何解决它的?我可以看到问题,但找不到解决方案。提前致谢! – ldepablo

1

Tomcat有依赖关系自己的文件。可以在Eclipse中配置构建路径,而不会将依赖关系添加到Tomcat以进行构建/部署,这可能会导致Java抛出该错误。

将您的项目重新创建为Eclipse中的动态Web项目(如果您不熟悉,请查看有关如何执行此操作的文档)。然后在自动生成的'WEB-INF/lib'文件夹中包含任何第三方jar或libs文件夹,以及从Eclipse中的源代码运行所需的构建路径(也就是您现在正在执行的操作)。然后,当您准备好部署时,导出到war文件,并且'WEB-INF/lib'文件夹中的所有必需库都将对您的编译源文件可见。

+0

那么什么是在这里完成! – vks

+0

你运行的是哪个版本的tomcat?你的项目中的'WEB-INF/lib'文件夹的内容是什么? – MiiinimalLogic

+0

在lib文件夹中没有任何内容......实际上没有lib文件夹!!!!!!!! – vks

1

好吧,我面临着相同的依赖地狱挑战,花了很长时间清理。 下面是我的一套需要同步进行的依赖 - 拇指的

  • 规则:始终使用相同的AWS SDK依赖版本(核心/ S3/EC2等)
  • 让其他依赖(由aws使用)在整个项目中保持一致。
  • 这包括以下为我
    • 公地HTTP冲突与AWS
    • 使用HTTP客户端删除公地HTTP,使用一致的HTTP客户端和HTTP的核心版本
    • 碰撞更快xml.jackson库。使用 aws使用的一致性版本。
      • 这包括约4瓶(杰克逊 - 数据绑定,核心,注释,CBOR
相关问题