-1

在此处输入图像描述 在此处输入图像描述

我上传了两个与我的 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.
4

2 回答 2

3

你有两个问题。第一个,正如@davidfmatheson 所提到的,是您已经在一个 Java 版本下编译了该程序,并试图在另一个版本中运行它。您要么需要在 Java 6 中重新编译,要么在 Java 7 中运行它。

第二个问题与您的命令行有关。当你编译时,你需要传递javac文件名,包括扩展名,但是当你运行它时,java使用不带扩展名的名称:

> javac Test.java
> java Test

这是NoClassDefFound错误的根源。

于 2012-08-15T19:59:34.437 回答
1

版本号 51.0 表示您使用 JDK 1.7 编译。which javac从命令行检查。然后,您尝试使用java Test显然是 1.6 版的 Java 来运行它。找出您的 JDK 1.6 所在的位置,确保 1.6 中的 位于 . javacPATH然后重新编译您的Test类。

于 2012-08-15T19:55:54.130 回答