2016-05-20 23 views
0

Ich arbeite an einer Webanwendung mit Servlet und Jsp in Windows OS, mit Java 1.6.0_07 und Tomcat 6.0.45 Version. Indem die generierten Klassendateien aus meinem System und versuchen Sie es in solaris-Server ausgeführt werden, die mit Java installiert 1.6 und Tomcat 6.0-Version es wirft Brache AusnahmeClassFormatError: Unbekannte Konstante Tag 58 in der Klassendatei

May 20, 2016 1:41:46 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet IpsmscRamtIsdMsgStatisticsServlet 
java.lang.ClassFormatError: Unknown constant tag 58 in class file com/abc/servlet/operator/ramt/statistics/isdstats/IpsmscRamtIsdMsgStatisticsServlet 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) 
     at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) 
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034) 
     at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
     at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
     at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199) 
     at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282) 
     at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767) 
     at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697) 
     at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889) 
     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 
     at java.lang.Thread.run(Thread.java:662) 

Als ich für die gleichen gegoogelt wurde, einige von ihnen gesagt, wie "das könnte passieren, weil Java-Dateien beschädigt sind", aber die gleichen Dateien funktionieren in meinem System und im Linux-System (Java 1.6 und Tomcat 6.0 Version)

Jede Hilfe wird geschätzt.

Antwort

0

Da der Fehler JRE auf der Zielmaschine erwähnt wurde, kann Solaris die Klassendateiversion nicht dekodieren. siehe JLS Siehe §4.4 der Java Virtual Machine-Spezifikation: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html

Sie können auch javap -verbose <class> auf Solaris-Maschine ausführen versuchen.
Wenn es funktioniert und eine korrekte Ausgabe zurückgibt, bedeutet das, dass Solaris jre die Klassendatei richtig lesen kann.

Wenn nicht, versuchen Sie erneut Java-Datei kompilieren oder versuchen Sie es mit anderen Java-Version auf Solaris.