【问题标题】:executing java program from command line in windows fails在 Windows 中从命令行执行 java 程序失败
【发布时间】:2012-10-08 00:18:34
【问题描述】:

我正在尝试从 Windows 的命令行运行一个非常简单的一类“Hello World”程序。

.java 文件位于“C:\Users\UserName\Desktop\direcName”。包是deem,类名是test

我可以 cd 到该目录并使用 javac test.java 从那里编译它,而且效果很好。但是,当我尝试使用以下方式运行它时:

java testjava -classpath directory testjava -cp . test 它抛出“线程中的异常mainjava.lang.NoClassDefFoundError: test (wrong name: deem/test)

如果我使用 java deem.test,它会说:Error, could not find or load main class deem.main

如何修复异常并让我的程序运行?

谢谢

【问题讨论】:

  • 能否分享test源代码...
  • 你可以cd到哪个目录?请描述您正在使用的目录结构。

标签: java exception cmd javac noclassdeffounderror


【解决方案1】:

这是从命令行运行 Java 程序时出现的“初学者常见错误”的变体。

java test 或 java -classpath 目录 test 或 java -cp 。测试它抛出“线程主java.lang.NoClassDefFoundError中的异常:测试(错误名称:deem/test)。

JVM 实际上是在告诉您在搜索路径上找到了“test.class”,但是当它读取类文件时,它得出的结论是该文件应该位于“./deem/ test.class" 或 "directory/deem/test.class" ...取决于您实际使用的“-cp”/“-classpath”参数

如果我使用 java deem.test,它会显示:错误,无法找到或加载主类 deem.main

现在告诉你它找不到“deem/main.class”。

请注意,您现在告诉它寻找一个名为“deem.main”的类,而不是“test”或“deem.test”。 (或者也许你只是在那里抄错了一些东西。)

规则真的很简单:

  1. 您必须将 完全限定 类名称作为选项后的第一个参数提供给 java。 (不是简单的类名。不是“.class”文件名。不是入口点方法的名称。)
  2. 您必须指定类路径,以便java 命令可以
    • 将类名映射到类文件的相对路径名(例如foo.bar.baz.MyClass映射到foo/bar/baz/MyClass.class)...
    • 然后根据类路径条目之一解析该相对路径;例如如果. 是类路径,则./foo/bar/baz/MyClass.class
  3. 该类必须具有所需的public static void main(String[]) 入口点方法。

所以 如果 ...

  1. 你的类的全限定类名是deem.test;即test 类在包deem 中,AND
  2. 对应的class文件在./deem/test.classAND
  3. 它具有所需的入口点方法,AND
  4. 测试应用程序不依赖于您的其他类或第 3 方库...

那么 java -cp . deem.test 应该可以工作。

【讨论】:

    【解决方案2】:

    如果类位于“deem”包中,则需要像这样包含包名。

    java deem.test
    

    应该可以的。

    【讨论】:

    • 问题中提到他试过了,还是不行。
    • 它不起作用。当我这样做时,它找不到课程。
    • 还要确保你的测试类中有public static void main(String args[])方法
    • test.class 是否必须在 deem 目录中?
    • @poeticcrayons 确保命令行文件没有在 .class 文件夹中运行。它需要在包文件夹之外运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多