【问题标题】:ClassNotFoundException With Only Class? [duplicate]ClassNotFoundException 只有类? [复制]
【发布时间】:2019-09-28 19:24:58
【问题描述】:

我已经尝试构建一个 java 项目大约两个小时,我发现多个资源告诉我如何解决我的 ClassNotFoundException 异常。他们都没有为我工作。起初我认为我在 Eclipse 中导出 JAR 的方式有误。但是,当我尝试在 IntelliJ IDEA 社区中运行我的代码时,它仍然无法运行。

我的代码超过 1000 行,因此在这里无法使用。令我困惑的是我只有一个文件“KeyStatistics.java”。如果我试图以错误的名称访问文件,ClassNotFoundException 异常是有意义的,但我这里只有一个文件。

我使用的是 JDK 12,在完全没有自定义任何构建设置之后,我使用 IntelliJ idea 构建了项目。我很想得到帮助,因为现在我唯一的选择是剖析代码的每个部分,这可能需要几个小时。

注意:当我使用 Eclipse 时,该项目可以运行得非常好(因为 Eclipse 在运行时实际上并没有构建项目)。

编辑:这是整个错误:

错误:无法找到或加载主类 KeyStatistics
原因:java.lang.ClassNotFoundException: KeyStatistics

【问题讨论】:

  • 这里没有信息。太抽象了,任何人都无法提出任何建议。添加有关文件及其内容的更多信息以及您到底在做什么?有什么例外
  • 异常信息会告诉你哪个类没有找到。它说什么?随附的堆栈跟踪将告诉您尝试访问命名类的代码。它说什么?
  • 它为什么类抛出 ClassNotFoundException?
  • 另外,不,你当然不应该发布你的整个 1000 行课程,但这并不意味着你不能构造和呈现 minimal reproducible example,这就是我们想要的。
  • A ClassNotFoundException 在运行时抛出,而不是在编译时抛出。因此,“我没有运行它,因为它有错误。” 对我来说没有意义。重现问题的步骤是什么?

标签: java eclipse intellij-idea classnotfoundexception


【解决方案1】:

这里有两个选项:

  1. 您正在使用来自源代码的单个文件 Java,这是 Java 11 中添加的一项功能。

  2. 您在 IDE 中运行,编译器输出路径配置错误。

选项 1 - 使用 Java 11+ 单文件功能

在这种情况下,您需要指定带有“.java”扩展名的文件名,例如从包含 KeyStatistics.java 的目录中运行(即使文件指定了包名):

java KeyStatistics.java

确保您运行的是 Java 11 或更高版本,以防您安装了多个版本,例如

$JAVA_11_HOME/bin/java KeyStatistics.java

工作目录应该是包含该文件的目录,即使它指定了一个包。例如,如果 KeyStatistics.java 在包 org.stats 中,通常您将其称为 org.stats.KeyStatistics,当从源运行单个文件时,您将使用目录分隔符运行它,例如/,而不是包分隔符.

因此,您将使用该项目的根目录

$JAVA_11_HOME/bin/java org/stats/KeyStatistics.java

选项 2 - 配置错误的 IDE 路径:

在 IntelliJ-IDEA 中打开项目结构对话框,确保 Project compiler output 配置正确。

然后进入模块并选择包含您的代码的模块。确保 Compiler output 设置为 inherit project path 或指向正确的目录。

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2010-12-07
    相关资源
    最近更新 更多