2014-10-20 92 views
0

我已经使用JDK 8.0创建了一个jar文件,我尝试在具有JRE 7.0的系统中运行该jar文件,但是出现如下错误:由于在运行jar文件中的版本兼容性导致的错误

C:\Users\admin\Desktop>java -jar test.jar 
Exception in thread "main" java.lang.UnsupportedClassVersionError: test : Uns 
upported major.minor version 52.0 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(Unknown Source) 
     at java.security.SecureClassLoader.defineClass(Unknown Source) 
     at java.net.URLClassLoader.defineClass(Unknown Source) 
     at java.net.URLClassLoader.access$100(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 

我需要在我的jar文件创建中做出什么改变。这样它会运行没有版本兼容性?

+0

如果您在Eclipse中创建项目,然后尝试改变**项目方面**'Java'到'1.7'&'编译version'为'1.7'。然后尝试运行带有JDK 1.7的系统的jar。 – OO7 2014-10-20 09:50:45

+0

@ OO7我正在使用CMD和记事本,没有IDE – androidGenX 2014-10-20 09:56:32

+0

什么是目标系统操作系统? – OO7 2014-10-20 10:05:18

回答

1

您需要使用-source选项javac。例如:

javac -source 1.7 foo/Bar.java 

在理论上可以分别指定sourcetarget选项,但您的评论来看,这听起来像瞄准1.7时,你不能使用Java 8种语言的功能在所有。

请注意,这仅涵盖您自己的源代码。如果xbasej-20091203.jar是针对Java 8构建的,则需要找到一个针对Java 7的版本。

+0

我试过,但我得到的错误在编译像“的javac:目标版本1.7的冲突与默认源1.8版” – androidGenX 2014-10-20 09:38:52

+0

@androidGenX:右键 - 听起来就像你不能用那么目标1.7当Java 8语言功能都没有。 – 2014-10-20 09:39:10

+0

你能告诉我好友吗?我想是这样的:C:\ TIPL \ GCST> javac的-target 1.7 -classpath的lib/xbasej-20091203.jar Example2.java 的javac:目标版本1.7的冲突与默认源释放1.8 – androidGenX 2014-10-20 09:39:47