尝试使用Eclipse IDE(使用jdk1.6)从使用Eclipse IDE(使用jdk1.6)的客户端调用使用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)
解决这个问题的方法是什么?
答案 0 :(得分:14)
尝试在Build Configuration中将Target JRE版本更改为1.6。
答案 1 :(得分:1)
问题是 - 我正在调用EJB,使用jdk1.7来自客户端,它使用的是jdk1.6。将jdk1.7切换到jdk 1.6,它有效。或者一个人可以将jdk1.6切换到1.7,那么它也可以工作。 结论 - 你可以调用任何使用与调用者相同版本或更低版本的jdk的EJB。
答案 2 :(得分:1)
我有同样的问题,但我使用的是textpad。解决方案非常简单。尝试将类冲突放在不同的位置(可能是备份文件夹),或者只要在同一目录中不存在就可以删除它。然后尝试编译java文件,以便根据计算机的规范构建新类。尝试它是否适合你,因为它对我有用。 :)
答案 3 :(得分:0)
这是我第二次遇到这个问题,只需更改此项目的构建配置即可。 右键单击您的项目名称 - > [properties] - > [java编译器] - > [启用项目特定设置] - >将[编译器合规性级别]设置为1.7
Eclipse有自己的编译器,无论你的系统中有哪个版本的javac(jdk),所以你必须首先配置eclipse编译器的版本。
参考:java.lang.UnsupportedClassVersionError: Bad version number in .class file?