212

我是 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");
   }
}

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

4

46 回答 46

235

这可能会有所帮助:

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

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

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

于 2017-08-03T14:17:10.093 回答
199

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

rm -rf .idea *.iml 

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

于 2017-08-28T04:42:17.373 回答
87

对我来说,解决方案是修复项目设置下的输出目录。在我只使用“目标”作为项目编译器输出之前。相反,我将其更新为具有完整路径,例如 D:\dev\sigplusjava2_68\target 在此处输入图像描述

于 2017-03-22T18:15:13.127 回答
48

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

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

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

这是我所做的:

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

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

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

于 2018-10-31T22:28:50.820 回答
35

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

文件菜单→无效缓存/重新启动...选项

于 2018-06-26T07:55:53.473 回答
17

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

像这样

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


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

通过单击找到上一个

![编辑配置

然后删除它

在此处输入图像描述

并打好。

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

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

这个

现在打Enter!!

达达?? (成功了吗?)

于 2017-04-27T19:54:15.830 回答
9

文件 > 项目结构 > 模块 > 将“src”文件夹标记为源。这应该可以解决问题。还要检查是否选择了最新语言,这样您就不必更改代码或进行任何配置更改。 在此处输入图像描述

于 2020-02-26T11:06:27.790 回答
8

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

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

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

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

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

于 2017-05-01T18:55:28.310 回答
7

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

这可以帮助你吗

于 2017-12-18T20:19:36.460 回答
7

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

于 2018-05-27T18:58:12.303 回答
6

打开模块选项卡(按 Ctrl+Shift+Alt+S)。我在一个项目下有两个模块。删除第二个冗余模块后我已经解决了这个问题(见截图)。在此处输入图像描述

于 2018-05-14T17:21:21.480 回答
5

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

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

于 2012-05-18T14:26:54.300 回答
4

当我的 Java 类在src/main/kotlin. 在我把它移到 之后src/main/java,问题就消失了。

于 2020-09-05T03:46:06.090 回答
3

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

mvn package
于 2021-04-22T16:39:13.100 回答
3

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

于 2019-03-08T21:16:58.140 回答
2

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

于 2018-06-20T01:41:46.513 回答
1

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

于 2019-05-29T16:01:37.750 回答
1

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

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

于 2020-12-11T17:43:34.810 回答
1

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

于 2019-06-27T07:46:02.397 回答
1

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

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

-DsomeArgument="arg with space must be quoted"
于 2020-01-17T15:53:58.480 回答
1

在此处输入图像描述

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

于 2019-03-15T08:10:11.140 回答
1

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

于 2020-03-27T12:21:39.660 回答
1

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

在此处输入图像描述

于 2019-03-08T17:46:43.127 回答
1

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

于 2019-01-07T17:58:39.270 回答
1

我正在使用 Kotlin,但我猜测问题是一样的。我会启动一个项目,创建一个文件并将 main 添加到其中,但 IDE 找不到 main。

我尝试了这个列表中的东西,但都没有奏效。我终于在 IntelliJ 的一个页面上提到了我的挫败感,并得到了联系。当然,它适用于 IntelliJ。来回几天后,我注意到突出显示功能不起作用并提到了这一点。结果发现IDE设置有问题。我仍然不知道具体出了什么问题,但我的解决方法是重置 IDE 设置。文件->管理 IDE 设置->恢复默认设置。

在这之后,
感谢 JetBrain 的 Konstantin 对他的耐心支持。

于 2020-12-22T17:08:23.867 回答
1

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

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

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

于 2020-04-29T09:41:05.023 回答
1

无效缓存不起作用。

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

于 2021-07-23T13:05:17.100 回答
1

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

在此处输入图像描述

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

于 2019-12-11T16:45:03.947 回答
0

简单的解决方案是转到命令行中的备份文件夹,即项目的根文件夹。你应该在你的机器上安装了 SBT。

如果你已经安装了 sbt,请运行命令“sbt package”,如果成功,这将重新编译项目,回到 intelliJ 它将工作。

于 2019-10-23T10:11:47.537 回答
0

当我转到“编辑配置”->“修改选项”并检查“运行前不构建”选项时遇到了问题,因为我使用 IntelliJ 来解决简短的编程问题,并且我不希望它每次都运行构建时间。

相反,我所做的是分配一个运行构建过程的快捷方式(仅在创建类后第一次),它修复了错误,然后是另一个方便的快捷方式“运行上下文配置”,它成功地运行 main 方法班级目前是重点。

于 2021-11-21T20:08:03.573 回答
0

我遇到了同样的问题并通过以下方式解决了它:

  • 关闭所有 IDEA 窗口
  • 删除C:/Userz/xx/.IdeaIC2019.3文件夹
  • 重新打开 IDEA
于 2020-09-03T16:04:11.280 回答
0

就我而言,当代码最初位于项目下的 /src 目录下时,应用程序运行良好。后来我在/src之后添加了/main/java目录,然后“找不到或加载主类...”错误发生了。那时您无法将 /src/main/java/YourMain.java 添加到运行配置中。我所做的是删除运行配置,然后右键单击项目->打开模块设置(或单击项目面板后按 F4)->项目设置->模块删除(x)旧内容根和+添加内容根,选择 /src/main/java。重建项目并运行。

于 2019-11-11T02:58:38.207 回答
0

详细阐述 Brad Turek 的解决方案... 默认的 IntelliJ Java 项目模板之一需要一个名为 Main 的文件,该文件定义类 Mainmain()方法入口点。如果该方法包含在另一个文件(和类)中,请更改运行配置:

运行配置窗口

  1. 在 IntelliJ 中打开项目后,使用Run:Edit Configurations... 菜单打开构建配置窗口。
  2. 如果Main 类的条目未列出包含公开 main()条目方法的类的文件的名称,请输入正确的文件名。(图片中的配置有误,所以配置面板里是红色的。)
  3. 我的main()入口方法在类(和文件)ScrabbleTest中。因此,将Main class:更改为ScrabbleTest可以修复运行时错误。

正如其他人所指出的,您必须使用新配置重新构建。我正在使用一个包,但这似乎对 IME 没有影响。希望这可以帮助。

于 2017-10-26T23:48:22.903 回答
0

尝试检查您的项目名称和完整的目录名称,看看是否包含任何“非英语”单词(如亚洲单词),有时这可能是错误的。重命名项目名称或项目路径包含此类单词并重新打开它可能会起作用。

于 2020-03-06T06:43:02.843 回答
0
  1. 创建项目时选择 maven 作为类型(不要选中 create from archetype 复选框)
  2. 在项目资源管理器中,右键单击 src 下 main 下的 java
  3. 选择新班级
  4. 用 public static void main 完成课程
  5. 从运行菜单中选择运行

intellij 选项来创建一个新的 java 类

于 2021-09-12T15:24:20.243 回答
0

如果您有正确设置的主类和模块(如果有),只需重新构建项目(CTRL + F9)并仔细检查(编辑配置)

于 2019-01-31T09:11:56.590 回答
0

尝试了一切,没有运气。最后,对我有用的简单解决方案(在 Mac 上)是:

  • 在项目打开时,转到 finder 并将 src 目录移出项目文件夹。IntelliJ 意识到 src 不再存在,并自行更新。
  • 在项目仍然打开的情况下,将 src 目录移回原位。IntelliJ 更新其项目配置,此时一切正常。
于 2022-01-29T13:31:02.973 回答
0

请确保您的文件扩展名是“.kt”

于 2021-09-08T18:38:19.907 回答
0

就我而言,它有助于删除 build.gradle 行

编译组:'com.microsoft.sqlserver',名称:'mssql-jdbc',版本:'8.2.0.jre11'

不知道为什么会这样,但是添加指定库后,编译的jar就停止工作了

于 2020-04-16T00:32:12.380 回答
0

在我的情况下,在模块的 build.gradle 中, mainClassName 分配必须声明完全限定的类名,即。在主类的源代码文件中指定为包名。

于 2018-03-13T20:53:09.363 回答
0

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

于 2021-09-30T07:25:48.960 回答
0

就我而言,它是一个 maven 项目,我重新导入了maven(右键单击pom.xml文件并单击Reimport),它立即工作。

于 2020-02-09T23:48:03.063 回答
0

如果您使用 gradle,请尝试通过命令行中的命令重建项目:

gradle clean build 
于 2021-05-25T18:00:44.050 回答
0

就我而言,我配置了(相对)长的 vm 参数。将这些参数(尽可能)转换为环境变量为我解决了这个问题

于 2019-10-29T13:45:15.363 回答
-1

按着这些次序

  1. 去跑步
  2. 去编辑配置
  3. 点击左上角绿色+登录
  4. 选择您正在使用的类型,例如“应用程序”
  5. 现在输入要运行的类的名称,而不是未命名的
  6. 在写 Main 类的地方做同样的事情,就在它的下面。

Yippee ....您的代码将运行:)

于 2018-06-07T08:12:18.723 回答
-1

如果具有方法的类正在扩展/实现另一个类/接口,那么它将找不到主类。更改签名,它应该可以工作。

我有同样的问题尝试了几乎所有来自这个线程的答案,但没有一个有效。然后这对我有用。

于 2020-08-05T17:14:03.833 回答