猿问

无法使用 IntelliJ 应用程序配置找到或加载主类

我在 IntelliJ IDEA 2019.1.3 中有一个使用 Gradle 的项目,其主类如下:


public final class Main {

    public static void main(String[] args) {

        // Do stuff

    }

}

但是每次我尝试启动我的程序时,它总是显示相同的错误:


Error: Could not find or load main class com.example.Main

Caused by : java.lang.ClassNotFoundException: com.example.Main

我正在使用应用程序配置模板。我尝试了以下方法:

  • 清理/重建项目

  • 使缓存失效/重启

  • 重新导入 Gradle 项目

  • 删除 .idea 文件夹

  • 删除并重新创建配置文件

  • 从头开始重新创建项目

  • 完全重新安装 IntelliJ

  • 从 JDK 8 更新到 JDK 11

  • 我的源设置正确,构建文件夹、类路径模块、文件包设置正确。构建任务在启动之前运行。实际上,Main.class文件build/夹下和生成的 jar 文件中实际上有一个文件。

我知道的唯一解决方案是使用 gradle 任务运行:

task run(type: JavaExec) {

    main = "com.example.MainKt"

    classpath = sourceSets.main.get().runtimeClasspath

    standardInput = System.in

    isIgnoreExitValue = true

}

但我宁愿不这样做,因为控制台不接受输入,出于某种原因不支持 unicode,而且我不能像使用 IntelliJ 的配置窗口那样轻松地传递程序参数。


有没有人遇到过这个问题,它是如何解决的?自从我更新到 IntelliJ 2019.1 后,它才发生在我身上,它在2018.3.6 上的大部分时间都运行良好。


ibeautiful
浏览 132回答 2
2回答

缥缈止盈

当第一次尝试重现您的 libgdx 示例时,一切正常。第二次尝试重新导入项目并沿途截屏失败,就像你的一样。从那以后,它一直失败。显然,从 gradle 导入这个项目时,IntelliJ 以某种方式弄错了类路径。它寻找build/java/main而不是build/kotlin/main.desktop解决问题 打开项目的模块设置 (F4)并将模块的“模块编译输出路径”更改core为 kotlin 输出路径。只需将java路径中的单词替换为kotlin:然后,当您点击 main 方法旁边的“运行”按钮时,它会像这样失败:Caused by: java.lang.IllegalStateException: GLFW windows may only be created on the main thread and that thread must be the first thread in the process. Please run the JVM with -XstartOnFirstThread. For offscreen rendering, make sure another window toolkit (e.g. AWT or JavaFX) is initialized before GLFW.这可以通过编辑启动配置并添加-XstartOnFirstThread到 VM 选项来解决。下一次尝试失败并出现此异常。com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: libgdx.png将启动配置中的工作目录更改为该android/assets目录时,就像您在 gradle 任务中所做的那样,演示将成功启动。为了记录我的环境:OS: MacOs Mojave JVM: openjdk version "1.8.0_212" (AdoptOpenJDK) IntelliJ: 2019.1.3 Ultimate Edition

繁华开满天机

问题来自该项目具有 Android 模块这一事实。该模块需要全局应用于项目中所有模块的 android gradle 插件,即使那些不是 android 模块的模块。当应用于模块时,它会添加一个Android-Gradle方面,将模块类路径从默认更改out/classes为build/classes/java. 对于kotlin模块,由于类路径错误导致运行时找不到主类。目前无法将 android 插件仅应用于 android 模块。解决方法包括修补 android.jar 文件、自动删除同步时的 Android-Gradle facet,或将 android 模块移动到外部项目。没有干净的方法来做到这一点。该问题已在此处报告,但没有迹象表明它会得到修复。
随时随地看视频慕课网APP

相关分类

Java
我要回答