我收到此错误
java.lang.UnsupportedClassVersionError:JVMCFRE003糟糕的主要版本; class = map / CareMonths,offset = 6
我的Eclipse的Java编译器设置为1.6
,我在C:\ Program Files中安装的Java SDK是1.6.0
,但是当我将我的应用程序安装到Webshere Application Server V7时,我仍然收到此错误。
offset=6
是什么意思?我想使用Java 6进行编译,而Websphere 7支持Java 6。
我确实看到安装服务器的IBM目录中的JDK是Java 7.这是导致这种情况的原因吗? ....但我的工作区的Eclipse编译器再次设置为Java 1.6
。
答案 0 :(得分:30)
WebSphere Application Server V7支持 Java平台,标准版(Java SE)6 (请参阅网络部署(所有操作系统),版本7.0信息中心中的Specifications and API documentation),它是自the release V8.5 when Java 7 has been supported。
我找不到Java 6 SDK文档,只能咨询IBM JVM Messages中的Java 7 Windows documentation。唉,我在文档中找不到错误信息。
由于java.lang.UnsupportedClassVersionError “当Java虚拟机尝试读取类文件并确定文件中的主要版本号和次要版本号不受支持时抛出。”,您运行了使用比运行时环境支持的Java更新版本的Java构建应用程序的问题,即WebSphere Application Server 7.0。
我可能会弄错,但我认为消息中的偏移= 6 是为了让您知道导致不兼容问题的位置。这对你,对我和许多其他人来说无关紧要,但有些人可能觉得它很有用,尤其是。当他们自己生成字节码时。
运行versionInfo命令以了解WebSphere Application Server V7的已安装功能,例如
C:\IBM\WebSphere\AppServer>.\bin\versionInfo.bat
WVER0010I: Copyright (c) IBM Corporation 2002, 2005, 2008; All rights reserved.
WVER0012I: VersionInfo reporter version 1.15.1.47, dated 10/18/11
--------------------------------------------------------------------------------
IBM WebSphere Product Installation Status Report
--------------------------------------------------------------------------------
Report at date and time February 19, 2013 8:07:20 AM EST
Installation
--------------------------------------------------------------------------------
Product Directory C:\IBM\WebSphere\AppServer
Version Directory C:\IBM\WebSphere\AppServer\properties\version
DTD Directory C:\IBM\WebSphere\AppServer\properties\version\dtd
Log Directory C:\ProgramData\IBM\Installation Manager\logs
Product List
--------------------------------------------------------------------------------
BPMPC installed
ND installed
WBM installed
Installed Product
--------------------------------------------------------------------------------
Name IBM Business Process Manager Advanced V8.0
Version 8.0.1.0
ID BPMPC
Build Level 20121102-1733
Build Date 11/2/12
Package com.ibm.bpm.ADV.V80_8.0.1000.20121102_2136
Architecture x86-64 (64 bit)
Installed Features Non-production
Business Process Manager Advanced - Client (always installed)
Optional Languages German
Russian
Korean
Brazilian Portuguese
Italian
French
Hungarian
Simplified Chinese
Spanish
Czech
Traditional Chinese
Japanese
Polish
Romanian
Installed Product
--------------------------------------------------------------------------------
Name IBM WebSphere Application Server Network Deployment
Version 8.0.0.5
ID ND
Build Level cf051243.01
Build Date 10/22/12
Package com.ibm.websphere.ND.v80_8.0.5.20121022_1902
Architecture x86-64 (64 bit)
Installed Features IBM 64-bit SDK for Java, Version 6
EJBDeploy tool for pre-EJB 3.0 modules
Embeddable EJB container
Sample applications
Stand-alone thin clients and resource adapters
Optional Languages German
Russian
Korean
Brazilian Portuguese
Italian
French
Hungarian
Simplified Chinese
Spanish
Czech
Traditional Chinese
Japanese
Polish
Romanian
Installed Product
--------------------------------------------------------------------------------
Name IBM Business Monitor
Version 8.0.1.0
ID WBM
Build Level 20121102-1733
Build Date 11/2/12
Package com.ibm.websphere.MON.V80_8.0.1000.20121102_2222
Architecture x86-64 (64 bit)
Optional Languages German
Russian
Korean
Brazilian Portuguese
Italian
French
Hungarian
Simplified Chinese
Spanish
Czech
Traditional Chinese
Japanese
Polish
Romanian
--------------------------------------------------------------------------------
End Installation Status Report
--------------------------------------------------------------------------------
答案 1 :(得分:8)
在此Eclipse Preferences面板中,您可以将编译器兼容性从1.7更改为1.6。这解决了我得到的类似信息。 对于Eclipse,它位于:Preferences - > Java - >编译器:'编译器合规级别'
答案 2 :(得分:8)
您还应确保已设置适当的Project Facets Java版本。 模块属性 - >项目方面 - >应该检查Java 1.6
答案 3 :(得分:6)
如果您的项目正在使用JDK 1.6进行编译并且您使用Java 7编译了依赖项,则会发生此错误。
答案 4 :(得分:4)
我在websphere 8.5中遇到了这个错误:
java.lang.UnsupportedClassVersionError:JVMCFRE003糟糕的主要版本; class = com / xxx / Whatever,offset = 6
我的项目JDK级别在eclipse中设置为1.7,默认情况下为8运行在JDK 1.6上,因此发生了冲突。我不得不将可选的SDK 1.7安装到我的websphere服务器上,然后问题就消失了。我想我也可以在eclipse中将我的项目级别设置为1.6,但我想编写为1.7。
答案 5 :(得分:2)
即使进行了上述更改后我也遇到了同样的错误,而我所做的就是
右键单击项目 - > properties-> java compiler->编译器合规性级别 - >将其更改为1.6
此更改特别适用于该项目。这应该有用。
答案 6 :(得分:1)
我得到了同样的错误。在我的Java项目的Project Facets中,Java编译级别设置为1.7,而WebSphere Application Server v7.0的运行时组合为JRE v1.6;在Project Facets中将Java编译级别设置为1.6可以消除错误。我没有必要更改编译器合规性级别,但它仍然是1.7。希望这有帮助!
答案 7 :(得分:1)
首先,您应该检查已编译的有问题.class
文件的主要版本,在您的案例map/CareMonths
中。请参阅this answer如何操作。
WAS7使用Java 6(as said Jacek),Java 6使用主要版本50,因此必须使用Java 6 编译项目。如何设置正确版本的Java编译器取决于您的IDE(例如Eclipse,IntelliJ)或构建工具(例如Maven,Ant)。
答案 8 :(得分:1)
如果日志指示java.lang.UnsupportedClassVersionError:JVM ****错误的主要版本。
然后代码和服务器不使用相同的JDK版本进行编译。
要解决此问题,请在代码或服务器JDK中切换JDK版本。
试试这个: - 在下面的用例中,我切换到1.7_64(JDK 1.7 64位)
c:\ IBM \ WebSphere \ WSRR \ v8.5 \ bin \ managesdk.bat -enableProfile -profileName WSRRSrv01 -sdkname 1.7_64
答案 9 :(得分:0)
如果您使用maven尝试添加pom.xml
<properties>
...
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
...
</properties>
否则尝试更改编译器版本。
答案 10 :(得分:0)
在eclipse中,转到Project-&gt; Properties-&gt; Java build Path-&gt; Order and Export。 如果您使用多个JRE,请尝试使用jdk和ibm。订单应该从jdk开始,然后是IBM。这就是我的问题得到解决的方法。
答案 11 :(得分:-3)
我通过设置env来修复它。变量JAVA_HOME。