2017-05-02 4 views
5

Mit Eclipse-Mars .Ich habe initialisieren bereits aws Java SDK 1.11.123 durch Installation von Software von help.Now hinzugefügt, wenn ich Tomcat laufen Server 7 ich diesen Fehler:konnte nicht Klasse 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

ich auch

java.lang.NoSuchFieldError: ALLOW_FINAL_FIELDS_AS_MUTATORS

Aber wenn ich Bibliothek überprüfen kann ich sehen kann PartitionsLoader.How diese gelöst werden?

enter image description here

Weitere Fehler, die im Zusammenhang scheinen:

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)

Antwort

2

java.lang.NoSuchFieldError: ALLOW_FINAL_FIELDS_AS_MUTATORS

Das klingt, als würdest du eine alte Version von Jackson irgendwo aufheben. PartitionsLoader verweist auf MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS beim Initialisieren eines statischen Member-Felds. Wenn die Version von MapperFeature, die Sie zur Laufzeit auswählen, dieses Feld nicht enthält, führt die resultierende Ausnahme dazu, dass der Klasseninitialisierungsprozess für PartitionsLoader fehlschlägt. Nachfolgende Versuche, die Klasse zu referenzieren, werfen dann die Ausnahme, die Sie sehen.

ALLOW_FINAL_FIELDS_AS_MUTATORS wurde in Version 2.2 hinzugefügt. Welche Version nehmen Sie auf?

+0

mein aws_java_sdk hat Jackson Version 2.6.6 und es gibt eine Jackson Version 2.1.2 in der Bibliothek außerhalb aws_java_sdk ..... kann das das Problem sein? Wie kann ich sicherstellen, aws_java_sdk wählt die interne – vks

+0

Vielen Dank ........ das war es !!!!!!!!!!!! Kompilierzeit und Laufzeit war differnt – vks

+0

Hallo, excatly das gleiche Problem. Könnten Sie mir bitte sagen, wie Sie es behoben haben? Ich kann das Problem sehen, kann aber keine Lösung finden. Danke im Voraus! – ldepablo

1

Tomcat eine eigene Datei für Abhängigkeiten. Es ist möglich, den Build-Pfad in Eclipse zu konfigurieren UND die Abhängigkeiten nicht zu Tomcat für den Build/Deploy hinzuzufügen, was dazu führen könnte, dass Java diesen Fehler auslöst.

Erstellen Sie Ihr Projekt als dynamisches Webprojekt in Eclipse neu (prüfen Sie die Dokumentation dazu, wenn Sie nicht vertraut sind). Fügen Sie dann Jars oder Bibliotheken von Drittanbietern in den automatisch generierten Ordner "WEB-INF/lib" ein, zusätzlich zu dem Build-Pfad, der für die Ausführung aus der Quelle in Eclipse erforderlich ist (wie Sie es jetzt tun). Wenn Sie bereit sind zu deployen, exportieren Sie diese in eine WAR-Datei und alle notwendigen Bibliotheken im Ordner 'WEB-INF/lib' sind für Ihre kompilierte Quelle sichtbar.

+0

So ist das, was hier getan werden !!! – vks

+0

Welche Version von Tomcat liegst du? Und was ist der Inhalt des Ordners "WEB-INF/lib" in Ihrem Projekt? – MiiinimalLogic

+0

Es gibt nichts im lib-Ordner ... es gibt keinen lib-Ordner in der Tat !!!!!!!! – vks

1

Ok, ich habe die gleiche Abhängigkeit Hölle Herausforderung konfrontiert und dauerte lange Zeit aufzuräumen. Im Folgenden sind meine Reihe von Abhängigkeiten, die synchron vorgenommen werden müssen -

  • Daumenregel: Immer gleiche aws sdk Abhängigkeit Version (Kern/s3/EC2 usw.)
  • andere Abhängigkeit Stellen (von aws verwendet) konsistent über Ihr Projekt hinweg.
  • Dazu gehörten die folgenden für mich
    • commons-http Zusammenstoß mit http-Client von AWS entfernen
    • verwendet commons-http verwenden konsistente http-Client und HTTP-Core Version
    • kollidieren fasterxml.jackson Bibliotheken.Verwenden Sie eine konsistente Version, die von aws verwendet wird.
      • Diese etwa 4 Gläser enthält (jackson-databind, Kern, Anmerkungen, cbor)
Verwandte Themen