我上传了两个与我的java相关的屏幕截图。当我尝试编译java文件时,它正确编译java文件并成功创建.class文件,但是当我尝试运行编译文件时,它会给出错误消息。我附上了两个与此问题相关的屏幕截图。请帮帮我。
以下是我尝试使用java Test
命令运行的堆栈跟踪:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Test : Unsupp
orted 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.AccessControll.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: Test. Program will exit.
并使用java Test.java
命令:
Exception in thread "main" java.lang.NoClassDefFoundError: Test/java
Caused by: java.lang.ClassNotFoundException: Test.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessControll.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: Test.java. Program will exit.
答案 0 :(得分:3)
你有两个问题。第一个,正如@davidfmatheson所提到的,你已经在一个Java版本下编译了程序,并试图在另一个版本中运行它。您需要在Java 6中重新编译,或者在Java 7中运行它。
第二个问题是您的命令行。编译时,您需要传递javac
文件名,包括扩展名,但是当您运行它时,java
将使用不带扩展名的名称:
> javac Test.java
> java Test
这是NoClassDefFound
错误的来源。
答案 1 :(得分:1)
版本号51.0表示您已使用JDK 1.7编译。从命令行检查which javac
。然后尝试使用java Test
运行它,其中Java显然是版本1.6。找出JDK 1.6所在的位置,确保1.6中的javac
位于PATH
的第一位,然后重新编译Test
类。