执行java程序时再次出现“错误名称”错误

时间:2011-02-10 08:54:41

标签: java

参考这篇文章 Receiving "wrong name" NoClassDefFoundError when executing a Java program from the command-line

我不明白如何解决问题

实际上在我的java源代码中有一行:

  

包es_2011;

当我通过JCreator编译程序时,一切都很完美。 它创建了一个名为es_2011的文件夹,用于放置.class文件。 执行操作也顺利进行,程序运行正常。

现在我只想使用命令行。 所以我将我的java文件放在javac.exe所在的目录中,但每当我尝试编译时,我都会得到同样的错误

我使用的命令是:javac ProgAudioJ.java

路径(javac.exe所在的位置)是:C:\ Program files \ Java \ jdk1.6.0_22 \ bin

有人愿意帮我理解,告诉我我该做什么吗? 非常感谢... MAX

5 个答案:

答案 0 :(得分:1)

用于看起来像这样的设置(在windows下)

C:\ classDir - >是项目 C:\ classDir \ testpackage - >是唯一使用的包(包“testpackage”) C:\ classDir \ testpackage \ Main.class - >是包含main方法的类(重要:它是.class而不是.java)

Main.class如下所示:

package testpackage;

public class Main {

    public static void main(String[] args) {
        System.out.println("Program started! ;-)");
    }

}

使用命令提示符:

c:\classDir> java testpackage.Main

结果:

Program started! ;-)

根据您的问题,它在IDE中启动,但不是从控制台启动: - 检查您是否真的使用.class文件的路径? - 使用控制台转到.class文件的目录,而不是项目(例如在Eclipse中它是bin目录 - 输入完整的合格类名(包括分隔的包。 - >例如testpackage.Main

更多信息可以在以下位置找到: http://www.oracle.com/technetwork/java/compile-136656.html

希望有所帮助

答案 1 :(得分:0)

MAX,如果类定义它在包es_2011中,那么它应该在一个具有相同名称的文件夹中。

因此,在您的情况下,将ProgAudioJ.java放在es_2011文件夹中然后运行     javac es_2011 \ ProgAudioJ.java

后者要运行它,你需要命令

java es_2011.ProgAudioJ

答案 2 :(得分:0)

您应该在javac.exe中添加path。编辑路径变量并将路径附加到jdk的bin

然后将java文件放在名为es_2011的目录中,因为包声明为es_2011然后编译

c:\es_2011\javac YourJava.java

现在回到C:

c:\java es_2001.Yourjava

答案 3 :(得分:0)

在阅读了其他帖子后:“Receiving "wrong name" NoClassDefFoundError when executing a Java program from the command-line”我想你会转到你的ProgAudioJ.class文件所在的目录es_2011并运行

java ProgAudioJ

来自该文件夹。

然后你必须转到上面的文件夹(cd ..)并运行

java es_2011.ProgAudioJ

答案 4 :(得分:0)

Java中的每个包对应于文件系统上的文件夹。因此,诸如com.stackoverflow之类的包声明意味着源类需要位于文件夹./com/stackoverflow中。通常,整个项目都有一个单独的src文件夹,其中包含com/stackoverflow

编译Java类时,您不需要将源文件放在与javac.exe相同的目录中,但是您需要确保javac.exe在您的操作系统中PATH变量。这告诉操作系统在运行命令时它应该在哪里查找可执行文件,在* nix机器上这通常是/usr/bin或只是/bin但是在Windows机器上,可执行文件通常存在于应用程序中自己的目录,即C:\Program Files\something。假设您已经正确安装了JDK,javac.exe应该已经在PATH中,您可以通过打开命令行并运行javac来检查这一点(就像那样)。如果你得到一些输出然后一切都很好,系统知道在哪里找到javac.exe

接下来,您需要转到项目文件夹并输入从项目文件夹运行的javac -d . src/com/stackoverflow/MainSO.java通知。这将在项目根目录中创建一个名为com的文件夹,并将编译后的类放在com/stackoverflow中。 -d标志告诉javac将编译好的类放在哪里,如果不加考虑,编译后的类将是源代码所在的位置。

然后,当您想要运行类时,键入java com.stackoverflow.MainSO(无.class)。至关重要的是,此命令需要在包含类层次结构根目录的目录中运行(即包含已编译类的com文件夹)。您可以通过为带有java标志的java命令提供类路径,为-cp指定其他位置来查找类。默认情况下,类路径将包含运行java命令的目录。例如,如果您的项目具有外部.jar文件的依赖项,则需要在类路径中提供它们中的每一个(带有完整文件路径)(这适用于编译器)。 IDE会自动为您执行此操作。

希望有所帮助。