2016-03-03 1222 views
1

我在使用Oracle Java 1.7的Windows操作系统上使用Ant构建了一个jar文件。当我部署我的CentOS机器上的罐子(已WAS 8.5.5)开放JDK 1.8运行,出现以下错误:JVMCFRE003错误的主要版本

java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=com/ac/ps/ft/home/ad/cr/testclass, offset=6 
at java.lang.ClassLoader.defineClassImpl(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:295) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154) 
at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:853) 
at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:763) 
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:586) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:690) 
at java.lang.Class.forNameImpl(Native Method) 
at java.lang.Class.forName(Class.java:182) 

我不知道究竟是什么的问题。我试过用Java 1.8编译,但它仍然给出了相同的错误。请帮忙。

+0

你可以在messages.log中三重检查你的java版本吗?您的运行时间可能与您想象的不同/更老。 – covener

+0

加上这个,用于编译的JDK告诉我们一些,但不是全部。如果您有一个十六进制编辑器,您可以通过查看字节偏移量6和7来明确查看.class的符合性级别:https://en.wikipedia.org/wiki/Java_class_file#General_layout – ewhoch

+0

@covener堆栈跟踪说明了这一点是完整的配置文件,所以消息头将在SystemOut.log中。我怀疑正在使用默认的Java 6。 –

回答

4

JVMCFRE003看起来像一个IBM Java错误代码,所以我不认为您的应用程序服务器正在运行Open JDK。您可以通过查看SystemOut日志的顶部来确认所使用的Java版本。

如果您使用传统的Websphere Application Server(而不是Liberty),那么它将始终使用随应用程序服务器安装的JRE。

在这种情况下,请使用安装管理器确保安装了适当的Java级别,然后使用managesdk command来启用它。