类具有不支持的主要或次要版本号

3
在Eclipse中,我创建了一个EAR项目,链接到一个ejb和一个model。我运行了这个EAR,但出现了以下错误:

无法部署earkmz

部署失败=部署应用程序[earkmz]时发生错误: UnsupportedClassVersionError: Class it.j2ee.kmZ.business.impl.JPACartService的主版本或次版本号不受支持,它们大于Java Runtime Environment版本1.6.0_43中找到的版本号。 有关详细信息,请参见server.log。

我的系统上只有一个JRE(1.6.0_43),因此我没有使用其他JDK版本错误地编译我的类。
我检查了我的设置,在Window > Preferences > Java > Compiler > Compiler compliance level > 1.6下,我的设置是正确的。
我的项目类是从另一个项目复制粘贴过来的,但我尝试从头编写它们,结果仍然相同。我错过了什么?

1
你是如何编译和组装你的项目的?你是否意识到通常不是使用JRE而是使用JDK进行编译?你使用哪些依赖关系?应用服务器? - Anders R. Bystrup
@AndersR.Bystrup 我写道,我的设置似乎是正确的,以排除我的问题可能是旧问题的重复。我通过在Eclipse上运行我的项目来编译它。我错误地写成了“JRE”而不是“JDK”,我会编辑我的问题 :) 我正在使用Glassfish 3。 - Kurt Bourbaki
1
你确定 Glassfish 正在 160_43 上运行,并且你确定你没有创建 Java7 的构件,你确定 EAR 中没有 Java7 的依赖吗? - Anders R. Bystrup
我觉得我找到了问题所在。我的全局偏好设置(从Window > Preferences > Java > Compiler > Compiler compliance level > 1.6中的那些)并没有影响到我的模型项目。编辑它专用的设置后发现,它的编译器版本被设定为1.7。我对这个大错感到非常惭愧。谢谢。 - Kurt Bourbaki
2个回答

4

请检查

项目 -> 属性 -> Java编译器

并将兼容性级别设置为1.6。


我认为你明白了。我的全局首选项设置(从“窗口>首选项>Java>编译器>编译器兼容性级别>1.6”中获取)似乎没有影响到我的特定模型项目。编辑其专用设置后发现其编译器设置为1.7版本。正如我在先前的评论中所说,我对这个错误感到非常惭愧。 - Kurt Bourbaki

0
这可能是因为您在EAR中包含的一些jar文件是使用不同版本编译的。

it.j2ee.kmZ.business.impl.JPACartService 类是否继承了一些存在于你的类路径中某个 jar 包中的类? - Pankaj Landge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接