我正在尝试运行此example 但它给了我“.class文件中的错误版本号...”错误。我正在使用jdk 1.6版本并且示例要求使用jdk 1.5。 java应该支持向下兼容性。我怎么能用jdk 1.6运行这个例子?
答案 0 :(得分:1)
当您尝试在较旧的JVM上运行具有新版本号的类文件时,会出现“.class文件中的错误版本号...”错误。 (即便如此,并非在所有情况下)
在较新的JVM上运行具有旧版本号的类文件应该可以正常工作。
您可以使用javap -v <full-class-name>
检查类文件的版本号。版本是:
major minor Java
45 3 1.0
45 3 1.1
46 0 1.2
47 0 1.3
48 0 1.4
49 0 1.5
50 0 1.6
我觉得......
51 0 1.7
答案 1 :(得分:1)
这里有一个微妙的陷阱,许多新人陷入其中。有时候 - 通常,实际上 - 您可能会从机器上安装的较旧的JDK中获得java.exe
的副本,这些JDK出现在您的路径的早期,您不知道。您可以使用闪亮的新JDK 1.6编译器进入编译类的情况,然后尝试使用旧的java.exe
运行它们,并获取此处提到的错误。如果路径上的旧java.exe
位置早于JDK bin
目录,那么您将从命令行找到编译器,但不会找到java.exe
本身的正确版本
额外的java.exe
通常由Java Plug-In的旧安装程序安装 - 允许您在Web浏览器中运行applet。流氓java.exe
可能在您的WINDOWS
目录中,或者某种变体(这是一个特别以Windows为中心的问题)。
如果你已经安装了包含Java插件的JDK 1.6,那么你只需删除WINDOWS目录中的java.exe
副本即可。如果您不想这样做,则应更改路径,以使JDK的bin
目录位于WINDOWS
之前。