java运行器是否能运行用较高javac版本编译的类?

来源:百度知道 编辑:UC知道 时间:2024/09/20 19:33:44
比如用1.6版本的javac编译后,用1.5版本的java运行,这样可以么?如果可以是否需要加什么参数?如果什么都不加会抛出异常:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
我试过了用1.6版本的javac编译后,用1.5版本的java运行时抛出异常:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad
version number in .class file
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.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launch

1.5版本的javac编译后,用1.6版本的java运行,这样应该没问题,高版本兼容低版本
至于你说的反过来的话你可以试验一下
最笨的方法,就是用1.6版本的javac编译后生成class,然后找一台由1.5的计算机上去运行
或者你得本机装了2个版本

高版本JDK编译的不能用低版本运行

编译时应该是有选项的,你要看下javac的帮助

如果你java程序用的都是1.5就存在的库或语法,那编译后是不会有问题的。

你这里应该有了1.5没有的新特性或新库

高版本要让低版本的运行在编译时要写

javac -target 1.5 -source 1.5 file.java