在IntelliJ IDEA中出现“ClassNotFoundException”错误

54

我做了这个简单的程序:

package main.java;

public class start {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

并且得到了这个错误。我完全不知道发生了什么事情,

"C:\Program Files\Java\jdk1.7.0_21\bin\java" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.1.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.7.0_21\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\jfxrt.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\zipfs.jar;C:\Users\Tim\IdeaProjects\Rust\out\production\Rust;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 12.1.4\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain java.start
Exception in thread "main" java.lang.ClassNotFoundException: java.start
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)

Process finished with exit code 1

有人知道是什么问题吗?


2
源根配置不正确,您已将main目录设置为源根,但应该使用该目录的父目录,或者您需要修复包语句。 - CrazyCoder
2
main.java 对于一个 package 来说是一个相当奇怪的名称。 - fvu
@fvu 这是自动生成的。我认为这与类位于project\src\main\java中有关。 - Aido
类路径从project\src\main\java开始。因此,该目录下的任何文件夹都是实际的包。如果您的文件位于src\java下,请尝试删除包并运行。 - Jaydeep Patel
@AidanEdwards实际上我认为这是您输入的内容,我自己并不是一个常规的IntelliJ用户,但我不认为一个受人尊敬的IDE会将main.java自动建议为包名。放弃那个项目,重新开始,并仔细注意您输入的每一个内容是我能给您的最好建议。 - fvu
16个回答

54

可能您的项目结构为 src/main/java/start.java,但是在将其添加到IntelliJ时,您已将src设置为源文件夹,因此IntelliJ将main.java作为一个包。

项目设置(Ctrl+Shift+Alt+S) → 模块 → 源选项卡中,将src/main/java设置为源文件夹。然后在您的简单程序中将包更改为您喜欢的任何内容(例如,my.test)。之后,如果IntelliJ报告与package有关的任何错误,请使用Alt+Enter进行快速修复。


很棒的提示。对于IntelliJ IDEA 14,我必须从.iml文件中删除以下行:<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />。 - Murali Mohan
换句话说,@Murali,在同一个对话框中,您还需要取消标记任何先前标记为源文件夹的父文件夹,例如srcsrc/main。否则,似乎文件会被编译两次,并出现关于多个定义的错误。 - Stein

19

以上的回答都很好。如果有人与作用域(scope)为 provided 有依赖关系,则需要以下配置。

Run -> Edit Configurations -> Include dependencies with "Provided" scope.

勾选复选框,应用并运行。


15

我曾遇到这个问题,但是没有通过任何这些解决方案来解决它。然而,我认为问题出在我使用了“打开”功能来从一个包含一些Java文件的目录创建项目。相反,我需要使用“创建新项目”并将同样的目录作为根目录。

确保在“创建新项目”时删除任何“.idea”目录和“.iml”文件,否则它会抱怨该目录中已经有一个项目了。


4
在我的情况下,项目路径中包含了一些字符,例如::\/。
例如:C:\something\other:thing\aaa\project,这就是为什么它不能工作。将项目移动到没有这些字符的路径即可解决错误。

4

如前所述,您应该检查 文件 → 项目结构 → 项目设置 → 模块 → 源文件夹 是否标记为“源”。 另外,您还应该更新 Run → 编辑配置 → 配置 → 主类,以与您的包对应。


2
我也遇到了同样的问题,但在网上找不到解决方案,所以我试着自己解决。经过阅读许多博客,我理解了这个概念。在我的情况下,由于我从git下载了代码,所以一切都很好,但是我的IDE intellij无法识别maven依赖项,这就是intellij报错的原因。我的pom.xml文件中有所有的依赖项,但是intellij仍然无法识别它。我在intellij右侧导航到maven窗口,并添加了我正在工作的项目路径,添加后maven加载了所有的依赖项,我的代码也正常运行了。所以基本上只需要三个步骤就可以解决它: 1. 在intellij中打开maven窗口。 2. 点击“+”,添加您的项目pom.xml文件所在的路径。 3. 点击Enter。 现在您可以运行您的项目了。 编码愉快!

2

仅供参考:我在文件夹名称中使用了Unicode字符,例如“课程名称”/ Tehtävät /项目,问题在于“ä”。当我将其更改为“a”时,程序开始运行。


1
在IntelliJ-Idea 2016中,对我而言,问题在于在Project_structure/modules中,在路径选项卡中,您必须勾选"继承项目编译输出路径",而不是"使用模块编译输出路径"

如果我使用“**Inherit...**”,那么在运行时会出现错误,提示“未指定输出路径”。 - Alec
1
答案在这里 - Guillaume Lebreton

1

最近重新安装了IntelliJ Community Edition后,我遇到了这个问题。

IntelliJ IDEA 2016.3.2 版本号#IC-163.10154.41,构建于2016年12月21日 JRE: 1.8.0_112-release-408-b6 amd64 JVM: JetBrains s.r.o的OpenJDK 64位服务器VM 我的笔记本电脑是华硕N73SV,使用Ubuntu 16.04

背景是: 我试图重新启动以前在Intellij中运行良好的项目。那些项目是用Intellij CI完成的,并且它们位于我的freebox服务器上。

我尝试了这里提出的所有解决方案,但没有结果。 最后我只是: 关闭项目。关闭Intellij。从我的freebox服务器复制/粘贴整个项目到我的系统文件夹。重新启动Intellij,打开之前粘贴到我的系统文件夹中的项目。从/ Build / Rebuild菜单中重新构建项目。最后运行我的项目。然后!!!完成......它工作了!!

我的建议是:项目的路径名长度或路径名中包含的字符是否有问题? 事实上,完整的路径名包括127个字符,其中包括:- _ /%=

这就是诀窍吗?

希望这能帮到你。 对我的破英语表示抱歉。我是法国人;-) 奥利弗


0
我在将Intellij Idea更新到2019.3版本后遇到了这个错误,但是无论尝试了哪些解决方案都没有解决。但是当我在Maven窗口中取消选中所有配置文件并重新选择正确的配置文件时,问题得到了解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接