我正在使用Java 1.6.0_07和tomcat 6.0.45版本在Windows操作系统中使用servlet和jsp开发Web应用程序。通过从我的系统中获取生成的类文件并尝试在安装了Java 1.6和tomcat 6.0版本的solaris服务器中运行它,它会抛出异常
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)
当我用谷歌搜索同样的东西时,其中一些人告诉他们#34;这可能发生,因为java文件已损坏"但是我的系统和linux系统(具有Java 1.6和tomcat 6.0版本)的相同文件正常工作
任何帮助将不胜感激。
答案 0 :(得分:0)
由于错误提到目标计算机上的JRE Solaris无法解码类文件版本。请参阅JLS请参阅Java虚拟机规范的§4.4: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html
您也可以尝试在solaris机器上运行javap -verbose <class>
。
如果它正常工作并返回正确的输出意味着Solaris jre能够正确读取类文件。
如果没有尝试重新编译java文件或在solaris上尝试使用不同的java版本。