41

我收到此错误

java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version;类=map/CareMonths,偏移量=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

4

12 回答 12

33

WebSphere Application Server V7 确实支持Java Platform, Standard Edition (Java SE) 6(请参阅网络部​​署(所有操作系统)版本 7.0 信息中心中的规范和 API 文档),并且它是自发布 V8.5 以来的 Java 7支持

我找不到 Java 6 SDK 文档,只能查阅Java 7 Windows 文档中的IBM JVM Messages。唉,我在文档中也找不到错误消息。

因为java.lang.UnsupportedClassVersionError“当 Java 虚拟机尝试读取类文件并确定文件中的主要和次要版本号不受支持时抛出。” ,您遇到了使用比运行时环境(即 WebSphere Application Server 7.0)支持的版本更新的 Java 版本构建应用程序的问题。

我可能记错了,但我认为消息中的offset=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
--------------------------------------------------------------------------------
于 2013-02-19T13:11:22.440 回答
9

在这个 Eclipse Preferences 面板中,您可以将编译器兼容性从 1.7 更改为 1.6。这解决了我收到的类似消息。对于 Eclipse,它位于:Preferences -> Java -> Compiler: 'Compiler compliance level'

于 2013-10-11T18:32:42.377 回答
8

您还应该确保已设置适当的 Project Facets Java 版本。Module Properties -> Project Facets -> Java 1.6 应该被检查

于 2014-05-23T14:48:52.923 回答
7

如果您的项目使用 JDK 1.6 编译并且您有使用 Java 7 编译的依赖项,则可能会发生此错误。

于 2014-01-08T14:48:46.210 回答
4

我在 websphere 8.5 中遇到了这个错误:

java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version;class=com/xxx/随便,offset=6

我在 Eclipse 中将我的项目 JDK 级别设置为 1.7,默认情况下在 JDK 1.6 上运行 was8,因此发生了冲突。我必须在我的 websphere 服务器上安装可选的 SDK 1.7,然后问题就消失了。我想我也可以在 Eclipse 中将我的项目级别设置为 1.6,但我想编码为 1.7。

于 2014-02-03T22:48:55.370 回答
2

即使在进行了上述更改后,我也遇到了同样的错误,而我所做的是

右键项目->属性->java编译器->编译器合规级别->修改为1.6

这种变化对项目来说是特别的。这应该有希望工作。

于 2016-07-13T07:05:44.770 回答
1

我遇到了同样的错误。在我的 Java 项目的 Project Facets 中,Java 编译级别设置为 1.7,而 WebSphere Application Server v7.0 具有 JRE v1.6 的运行时组合;在 Project Facets 中将 Java 编译级别设置为 1.6 消除了该错误。不过,我不必更改编译器合规级别,它仍然是 1.7。希望这可以帮助!

于 2014-04-16T19:27:09.790 回答
1

首先,您应该检查已编译的有问题.class文件的主要版本,在您的情况下map/CareMonths。请参阅此答案如何操作。

WAS7 使用 Java 6(如 Jacek 所说),而 Java 6 使用主要版本 50,因此您必须使用 Java 6 编译您的项目。如何设置适当的 Java 编译器版本取决于您的 IDE(例如 Eclipse、IntelliJ)或构建工具(例如 Maven、Ant)。

于 2014-05-22T13:42:27.883 回答
1

如果日志显示 java.lang.UnsupportedClassVersionError: JVM**** bad major version。

那么代码和服务器不是用相同的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

于 2017-11-08T05:15:02.237 回答
0

如果您使用 maven 尝试添加 pom.xml

<properties>
    ...
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    ...
</properties>

否则尝试更改编译器版本。

于 2017-05-31T14:55:55.400 回答
0

在 Eclipse 中,转到 Project->Properties->Java build Path->Order and Export。如果您使用多个 JRE,请尝试使用 jdk 和 ibm。订单应以 jdk 开头,然后是 IBM。我的问题就是这样解决的。

于 2017-08-08T04:11:16.477 回答
-3

我通过设置环境修复它。变量 JAVA_HOME。

于 2017-02-17T12:19:17.807 回答