ChatGPT解决这个技术问题 Extra ChatGPT

错误:无法在 intelliJ IDE 中找到或加载主类

我是 Java 的初学者,我正在尝试使用 IntelliJ 运行我的代码,该 IntelliJ 我刚刚安装为带有 JDK 1.7 的 IDE。以下代码甚至无法编译并不断给我错误:

Error: Could not find or load main class libTest

代码

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

我必须在编译器设置中进行任何更改吗?或者是代码。

源文件的名称是什么?是libTest.java吗?
import java.lang... 对于 lang 包中的类,这会自动发生。
正如 QuantumMechanic 所提到的,您的主类需要位于一个与其名称完全相同的文件中。所以libTest需要在一个名为libTest.java的java文件中,否则java编译器会报错。另外,您是通过 IDEA 创建源代码的,还是在现有源代码上创建了一个新的 IDEA 项目?
尝试导入 java.lang 没有任何区别
它们是相同的。是否有任何其他原因应该标记此类错误?

K
Kishore

这可能会有所帮助:

1)“构建”菜单-> “Rebuild Project”。有时 Intellij 不会重写这些类,因为它们已经存在,这样您就要求 Intellij 重写所有内容。

2)“运行”菜单-> “Edit configuration”->删除个人资料 ->添加回配置文件(“应用程序”,如果它是 Java 应用程序),从“主类”下拉菜单中选择您的主类。

3)“构建”菜单-> “Rebuild Project”。


我在 IntelliJ 中有一个全新的项目,但它无法运行。 Rebuild Project 为我工作!
第二个选项对我有用。但是删除配置文件,然后右键单击您的类->运行
"Build" menu -> "Rebuild Project - 完成了任务!谢谢
第一个选项 rebuild project 解决了我的问题。谢谢!
我删除了 .idea、.mvn 和其他目标目录,然后重新启动了 IntelliJ。转到事件日志,将项目添加为 Maven 项目,然后按照@Kishore 在此处提到的步骤进行操作。它现在正在工作。
y
youhans

如果上述答案都不适合您,只需关闭您的 IntelliJ IDE 并从项目的根目录中删除 IntelliJ IDE 文件和文件夹:

rm -rf .idea *.iml 

然后用 IntelliJ 打开项目。它现在必须工作。


这对我有用。我还将我的项目重新导入 IntelliJ,但对于“组模块”选项,我使用了“使用限定名称”(而不是“使用显式模块组”。
删除 .idea 文件夹总能解决 JetBrains IDE 的所有问题 :)
这也对我有用,我是 Intellij 的忠实粉丝,但他们也必须学会做简单的事情。
这有效,但我不得不再次设置项目设置。
正如其他人指出的那样,这几乎解决了 IDEA 的所有问题。我的问题是在签出一个相当旧的分支后,项目的实际内容与 .iml 文件之间存在一些差异。由于我们 gitignore .iml 文件,它会在您切换分支时坐在那里等待,并在您最不期望的地方中断。
U
Uncle Iroh

https://i.stack.imgur.com/RE8gj.png


我的解决方案可能实际上是下面@Ehsan 答案的细微变化。也许通过指定目标目录,它会为其提供一个新位置,在该位置编译所有对象,基本上执行与 Rebuild Project 相同的工作。
@UncleIroh如果它做了同样的工作,重建+阅读配置。最初会解决这个问题。它没有,但你的解决方案做到了。
S
Sarah Cohen

我遇到了这个问题,我在阳光下尝试了所有我能想到的和在这个网站上的东西。

从远程分支拉出后,我的 Java 类都没有被拾取。在项目层次结构中,所有类的名称都是红色的 J,而不是蓝色的 C。

最后,我尝试按照本教程进行操作,并尝试了一些未描述的步骤并修复了问题:https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

这是我所做的:

转到文件 |项目结构,或按 Crtl+Shift+Alt+S 在项目设置部分下选择模块。在“来源”选项卡中,单击“标记为:”行上的来源。单击应用按钮。

出于某种原因,当时我所有的课程都有蓝色 C。

对 IntelliJ 和/或 IDE 如何解释这种现象有更好理解的人,但我现在只知道它可以看到所有类,更重要的是主要的类,然后运行。


这仅在我关闭 Intellij、删除 .idea 文件夹然后重新打开 Intellij 并按照上述步骤操作后才对我有用。
B
Brad Turek

使缓存无效并重新启动您的 IntelliJ,它对我有用。

https://i.stack.imgur.com/Twezi.png


B
Brad Turek

显式创建 out 文件夹,然后将输出路径设置为 C:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

https://i.stack.imgur.com/ymJNY.png

仅在 out 时似乎对我有用,并且期望 IntelliJ 制作文件夹不会。

还可以尝试让 IntelliJ 为您提供新的运行配置:

通过单击找到上一个

https://i.stack.imgur.com/wuxkq.png

然后删除它

https://i.stack.imgur.com/Sv89T.png

并打好。

现在,(重要步骤)打开包含您的主要方法的类。这可能是通过单击左侧项目窗格中的类名最简单的方法。

给 'er 一个 Alt + Shift + F10 你应该得到一个

https://i.stack.imgur.com/mlEAZ.png

现在按Enter!

达达?? (成功了吗?)


运行配置有效,尤其是当您将 main() 函数从 class Main 移至其他类时。在这种情况下,如上所示编辑运行配置并将“主类”的值更改为您的类名(完全限定)。
我只有“编辑配置”选项,对我不起作用(
S
Sumit Jadiya

https://i.stack.imgur.com/mgrTZ.png


重复答案。
m
msoltys

我知道这是不久前被问到的,但我只是在这个问题上磕磕绊绊,并认为我的发现可能对其他人有所帮助。正如所指出的,错误消息基本上是 out 文件夹的结果。这是因为,当您尝试运行程序时,它首先编译代码,并将编译结果放到 out 位置,然后尝试从 out 位置加载编译后的代码。如果编译后的代码不在预期的位置,您将收到错误消息。

我特别想分享的一点是,有时,即使您的运行配置在配置面板的“启动前”部分中指定了“构建”,代码也不会被编译(构建)。

这什么时候会发生?可能导致这种情况发生的一种情况是,如果您正在使用模块并且您手动删除了模块输出目录。例如,如果我有一个名为“foo”的模块,那么在 out/production 下应该有一个名为 foo 的目录。如果手动删除它,构建系统可能不知道它需要重新构建。

更糟糕的是,如果您选择 Build |构建模块'foo',它仍然可能无法重建模块。如果是这种情况,您应该在模块中选择一个文件,例如“bar.java”,然后选择 Build |重新编译'bar.java'。现在应该恢复 out 目录 out/production/foo。

由于 IntelliJ 通常知道正在发生的任何变化,这让我感到惊讶,并花了我一点时间来弄清楚,所以我想我会分享。


A
Abdessattar NOISSI

检查您的类模块:我遇到了 intellij 的这个问题:我有一个 Maven 多模块项目,问题是我运行的类在配置中不存在该模块,所以我的问题通过设置正确的模块来解决( “编辑配置”->“使用模块类”)

这可以帮助你吗


也为我工作。谢谢!安装 IntelliJ 或 Scala 插件的升级时可能出现了问题。之后你会遇到这个奇怪的问题。非常烦人和耗时。希望 JetBrains 找到解决方案。
这对我有用,但该选项现在称为“继承项目编译输出路径”。
N
No-Name Nemesis

我必须将“src”文件夹标记为“Sources”。重新启动 IntelliJ 并重建项目后,我可以运行项目而不会出现其他问题(请参阅 screenshot)。编辑:您可以通过 File->Project Structure 或按 Ctrl+Shift+Alt+S 访问“Project Structure”选项卡。


如果您(像我一样)没有“来源”选项卡,那么您应该添加一个新模块(单击绿色 +)并选择您的主文件夹作为来源。什么都不会被覆盖,src 文件夹会变成蓝色。
T
Taras Melnyk

https://i.stack.imgur.com/Ru6qF.png


H
Hakan Serce

当类在默认文件夹中时,即当类没有声明包时,我遇到了这样的问题。

所以我想在类的顶部使用包语句(例如package org.me.mypackage;)应该可以解决它。


我要复制那行代码吗??如果我不得不修改它,我该如何修改??
只需使用您自己的软件包名称,如下所示:package org.confused.mailman;
好吧,包语句必须与 IDE 放置文件的位置相匹配。如果 IDE 没有将文件放在 sourceBase/org/confused/mailman 中,那么添加该软件包行将无济于事。
如果选择了推荐的修复程序,我想 IDE 将对此进行指导,并自动修复此问题。
没有帮助:/ ..IDE似乎没有对我所做的任何更改感到困扰..它引发上述错误并坐下来放松
l
lleiou

在 IntelliJ 中创建项目后,尝试运行以下命令:

mvn package

B
Big Pumpkin

当我的 Java 类在 src/main/kotlin 下时,我遇到了这个问题。将其移至 src/main/java 后,问题就消失了。


P
Pierluigi Vernetto

我已经尝试了这里建议的所有黑客 - 无济于事。最后,我简单地创建了一个新的 Maven 应用程序并手动将 pom.xml 和 java 文件和资源一一复制到其中。现在一切正常。我是 IntelliJ 的新手,完全不为所动,但让它进入不稳定状态是多么容易。


需要关闭intellij,删除.idea文件夹(可能是隐藏文件);然后在 intellij 中再次打开该文件夹 - 它将根据 maven/grade 配置重新初始化 intelli 项目。
b
blindcant

就我而言,问题似乎与升级 IntelliJ 有关。当我这样做时,我用新 IntelliJ(2017 社区到 2018 社区)的文件覆盖了旧 IntelliJ 中的文件。在那之后,我所有的项目都被打破了。我尝试了这个线程中的所有内容,但没有一个有效。我尝试将 gradle 升级到最新版本(4 到 4.8),但没有成功。唯一对我有用的是删除整个 IntelliJ 文件夹并重新安装它。在那之后,我所有的项目都工作了。


看来这实际上是它。我使用便携式 intellij,因此我将主文件夹(如 idea\bin)重命名为 idea_old\bin,并将 %user%\username 中的设置文件夹(即 .IntelliJIdea2018.2)重命名为 .IntelliJIdea2018.2_old,然后重新提取 intellij zip 文件以开始使用它作为全新的便携式版本(这是版本 2018.2.1),带有多个独立模块(未在单个父 pom.xml 中链接)的 Spring Boot 应用程序,每个都是具有自己的 pom.xml 和瞧的 Spring Boot 应用程序!所有工作,创建目标文件夹,在通过 spring boot 仪表板运行之前编译。
S
Smile

无效缓存不起作用。

我用虚拟更改编辑了主类 java 文件并运行它。有效。


这有效,简单的修复
S
Shyam

转到 File-> Invalidate Caches and Restart 。否则删除 rm -rf .idea *.iml 并重新启动 InteliJ


J
JavaTec

对我来说 - 我尝试了上面的几个选项,但没有奏效。然后我刚刚重命名了我的 Application 类,这可能迫使 intelliJ 构建一个新的 jar 并且错误消息开始改变。然后我将它重命名回来并且它起作用了。


k
kgui

将该目录标记为源目录。通过 Ctrl+Shift+Alt+S 打开

https://i.stack.imgur.com/Y4mw1.png


重复答案。
i
ibamboo

https://i.stack.imgur.com/eBPH7.png

modules.xml 内容错误,我不知道我的 IDEA 有什么问题。


c
codeMonkey

我从其他地方继承了一堆 .JAVA 文件,但不知道如何让它们在任何 IDE 中工作。最终,我不得不转到 Main.JAVA 文件所在的命令行并运行 javac Main.java。这创建了一堆 .CLASS 文件。然后,IDE 能够弄清楚要做什么。


B
Beni Murza

使用 Scala/SBT 时出现此错误。即使一切设置正确,IntelliJ 也找不到主类。我的解决方案:删除 <user>/.sbt/<version>/plugins/target 文件夹,然后重新启动 IntelliJ。


A
Akash Yellappa

您可能指定了错误的包,并且包层次结构不正确。往下看

https://i.stack.imgur.com/SDcSo.png

在这种情况下,ide 会突出显示错误的路径。


O
OHY

我将 IntelliJ 与 Spring 一起使用,我的主类包装在一个 JAR 中。我必须在“运行/调试”配置对话框中标记“包含具有“已提供”范围的依赖项”


K
Kurskinen

我们在文件/项目结构中。答案可能是:

指示为“内容根目录”的文件夹需要代码所在的子文件夹。加上找到将代码标记为排除和不标记的按钮。不要与状态为已排除的复选框混淆,而无需说明处于哪个阶段和什么** 是编译器排除还是运行时排除?你注定要测试和抽签。所以没有那个复选框,只有图标和颜色。

作为一个想法,我们需要破解它最初被认为是如何工作的。他们从一开始就没有让它发挥作用,而是开始以过早的编码风格添加东西。已经这么多年了,你不能指望任何改进。但是作为治疗方法,我们可以找出一些方法来让它每次都正确。


Y
Yep

您可以在此处检查的另一件事是传递给 JVM 的实际命令,并确保它看起来正常。滚动到运行控制台的顶部,它应该是第一行。

运行配置 VM 选项字段中的空格会使应用程序启动命令不正确,并可能导致此错误消息

-DsomeArgument="arg with space must be quoted"

l
lostperson

我已经尝试了这里答案中建议的几乎所有内容,但对我没有任何帮助。

在尝试运行我的应用程序一小时后,我注意到我的项目路径包含非 ASCII 字符(阿拉伯字符)。在我将项目移动到没有非 ASCII 字符的路径后,它执行得很好。


s
steven smith

我正在使用 Kotlin,但我猜测问题是一样的。我会启动一个项目,创建一个文件并将 main 添加到其中,但 IDE 找不到 main。我尝试了这个列表中的东西,但没有一个奏效。我终于在 IntelliJ 的一个页面上提到了我的挫败感,并得到了联系。当然,它适用于 IntelliJ。来回几天后,我注意到突出显示功能不起作用并提到了这一点。结果发现IDE设置有问题。我仍然不知道具体出了什么问题,但我的解决方法是重置 IDE 设置。文件->管理 IDE 设置->恢复默认设置。在此之后,我的主要功能左侧可以看到绿色三角形开始图标,并且后续项目继续正常工作。感谢 JetBrain 的 Konstantin 对他的耐心支持。


V
Vijay

在创建项目时选择 maven 作为类型(不要选中 create from archetype 复选框) 在项目资源管理器中,右键单击 src 下 main 下的 java 选择新类 使用 public static void main 完成类 从运行菜单中选择运行

https://i.stack.imgur.com/kG0Wq.png