2016-03-03 34 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來啓用它。

相關問題