ClassNotFoundException仅包含类?

时间:2019-05-10 21:41:21

标签: java eclipse intellij-idea classnotfoundexception

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

我的代码超过1000行,因此在这里不起作用。但是,令我困惑的是我只有一个文件“ KeyStatistics.java”。如果我尝试使用错误的名称访问文件,则ClassNotFoundException例外是有意义的,但是这里我只有一个文件。

我使用的是JDK 12,在完全不自定义任何构建设置之后,我以IntelliJ思想构建了项目。我很乐意提供帮助,因为现在我唯一的选择似乎是剖析代码的每个部分,这可能还要花费几个小时。

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

编辑:,这是整个错误:

  

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

1 个答案:

答案 0 :(得分:0)

这里有两个选项:

  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或指向正确的目录。