不支持的类版本错误

7

我试图从使用jdk1.6的Eclipse IDE的客户端调用使用NETbeans(使用jdk1.7)创建的EJB时,遇到了以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: stateless/TestEjbRemote : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:688)
    at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:463)
    at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:414)
    at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
    at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at Main.main(Main.java:19)

有没有解决这个问题的办法?

1
请参考此链接:https://dev59.com/WlfUa4cB1Zd3GeqPHWLZ - Shashank Kadne
4个回答

15
尝试在构建配置中将目标JRE版本更改为1.6。

@RaviG,我应该如何在Eclipse中更改“构建配置中的目标JRE版本为1.6”。 - Rohit Elayathu
1
详细的解释可在以下网址查看 - http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-JREs.htm - Ravindra Gullapalli

1
问题是- 我从客户端调用使用jdk1.7制作的EJB,而客户端使用的是jdk1.6。将jdk1.7切换到jdk1.6后,它可以工作。或者您可以将jdk1.6切换到1.7,那么它也可以工作。 结论- 您可以调用任何使用与调用方相同或更低版本的jdk的EJB。

1
我曾经遇到过同样的问题,但是我使用的是TextPad。解决方案非常简单。尝试将冲突的类放在不同的位置(例如备份文件夹),或者只需将其删除,只要它不存在于同一目录中即可。然后尝试编译Java文件,以便可以根据计算机的规格构建新的类。尝试看看是否适用于您,因为对我有效。 :)

0

这已经是我第二次遇到这个问题了,只需要更改此项目的构建配置。 右键单击您的项目名称 --> [属性] --> [Java编译器] --> [启用项目特定设置] --> 将[编译器兼容性级别]设置为1.7

Eclipse有自己的编译器,无论您系统中使用哪个版本的javac(jdk),因此您必须首先配置eclipse编译器的版本。

参考:java.lang.UnsupportedClassVersionError: Bad version number in .class file?


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