java - 类格式错误 : Unknown constant tag 58 in class file

标签 java tomcat java-6

我正在开发一个在 Windows 操作系统中使用 servlet 和 jsp 的 Web 应用程序,使用 Java 1.6.0_07 和 tomcat 6.0.45 版本。通过从我的系统中获取生成的类文件并尝试在安装了 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)

当我用谷歌搜索相同的内容时,他们中的一些人告诉我“这可能是因为 java 文件已损坏”,但相同的文件在我的系统和 linux 系统(具有 Java 1.6 和 tomcat 6.0 版本)中工作正常

任何帮助将不胜感激。

最佳答案

如错误所述,目标机器上的 JRE Solaris 无法解码类文件版本。参见 JLS 参见 Java 虚拟机规范的 §4.4: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html

您也可以尝试运行 javap -verbose <class>在 solaris 机器上。
如果它工作并返回正确的输出意味着 Solaris jre 能够正确读取类文件。

如果不行,请尝试重新编译 java 文件或尝试在 solaris 上使用不同的 java 版本。

关于java - 类格式错误 : Unknown constant tag 58 in class file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346417/

相关文章:

java - 如何修剪字符串的特定部分的这一行

jsp - 带有 JNI 的 Java bean?

java - JDK6 中的 TimeZone.setDefault 变化

java - JDK 6 : Is there a way to run a new java process that executes the main method of a specified class

java - 从类 libgdx 中绘图

java - 是否可以在项目中更改 Java 语法?

java - log4j :WARN No appenders could be found for logger (org. springframework.web.filter.CharacterEncodingFilter)。使用 log4j2

java - 如何使用 servlet 4.0 配置 taglib

java - 没有唯一键的 TreeMap

java - Hibernate 位数组到实体映射