我想测试一下java的平台独立性,所以我用java写了hello world程序,用windows的编译器编译,生成HelloWorld.class文件。然后我尝试在linux(ubuntu)中运行该文件。我最终出现错误。(JRE已经安装在linux中)
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: HelloWorld. Program will exit.
然后我使用 linux 编译器编译了相同的程序,并使用该 .class 文件检查它是否在 windows 中运行。它运行良好。
据我所知,由于字节码文件(.class)与平台无关,因此该程序应该可以完美运行。当我尝试在 linux 中运行该程序时出了什么问题?