【问题标题】:Java class will not run (command prompt) [duplicate]Java 类将不会运行(命令提示符)[重复]
【发布时间】:2013-08-31 01:56:23
【问题描述】:

我已经与这个程序斗争了一段时间,但不知道出了什么问题。任何帮助将不胜感激。

这就是问题所在。我有三个类,一个是用于登录 mysql 数据库,另一个是从数据库输出数据,最后一个是 main 方法。我在让他们编译时遇到了一个巨大的问题,遇到了关于在不同类中找不到方法符号的错误。我终于通过使用命令"javac -d bin/cdtPack src/CDT.java src/login.java src/ClientBase.java"

让它们全部编译

但是,现在当我尝试使用 main 方法运行该类时,出现错误:

线程“主”java.lang.noClassDefFoundError 中的异常:CDT(错误 名称:cdtPack/CDT)

然后是 at java 的列表....

有人知道出了什么问题吗?

【问题讨论】:

  • 看起来CDT 应该属于包cdtPack 或者您从错误的目录运行它...尝试切换到bin\cdtPack 目录并再次运行类文件?
  • 如果这没有帮助,请查看其他 Google 和 SO 命中的“java.lang.noClassDefFoundError”“错误名称”。
  • 这个网站让我很困惑,所以我不知道如何选择你的答案@MadProgrammer,但是当我备份到 bin 目录时它会运行。 :D
  • @user2713086 我将评论作为答案,如果我需要进一步详细说明,请告诉我。很高兴你让它工作了;)

标签: java command runtime noclassdeffounderror prompt


【解决方案1】:

试试这个

你转到 src 目录,如果那里有类文件,然后输入

java CDT

如果该类存在于其他目录中,则键入

java a/b/c/JavaClassName

如果你想在运行时添加一些运行时 jar 则

java -cp classpath=%classpath%;jarfilename.jar; a/b/c/JavaClassName

【讨论】:

    【解决方案2】:

    看起来 CDT 应该属于包 cdtPack 或者您从错误的目录运行它...

    尝试切换到bin 目录并再次运行class 文件。不要忘记在 class 名称之前包含 package 名称。例如:

    ...\bin> java cdtPack.CDT
    

    【讨论】:

    • 我认为这行不通。
    • @StephenC 如果CDT 属于默认包,它将。如果CDT 应该在cdtPack 包中,我会同意。但是考虑到 OP 使用 javac -d bin/cdtPack ... 编译类的事实,我相信它们在默认包中......当然我可能完全错了;)
    • JVM说类中的名字是“cdtPack/CDT”,意思是肯定有package声明。
    • @StephenC 所以,鉴于src/CDT.java 是源文件,我们可以假设它应该有一个包语句。这不会产生编译器错误吗?
    • 不,不会。试试看。
    【解决方案3】:

    正如linked Q&A 解释的那样,当您尝试使用错误的类名运行 Java 应用程序时会发生这种情况。

    你的班级看起来像这样:

    package cdtPack;
    public class CDT {
        ....
    }
    

    也就是说它的类名是“cdtpack.CDT”。

    但你是这样运行的:

    $ java CDT
    

    JVM 告诉你这个:

    “你告诉我运行CDT,但是当我查看它时,类说它的名字是“cdtpack.CDT”!!”

    您必须了解 Java 类路径的工作方式,以及 javacjava 以及所有其他 Java 工具查找类的方式。

    你的“CDT.class”文件应该在一个名为“cdtpack”的目录中,然后“cdtpack”的parent目录应该在classpath中;即

    像这样编译:

    $ javac -d bin -classpath bin src/cdtpack/CDT.java
    

    应该创建“bin/cdtpack/CDT.class”。然后像这样运行:

    $ java -classpath bin cdtpack.CDT
    

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多