为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2022-12-15 11:24:58
我在 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.MainCaused 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 上的大部分时间都运行良好。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

当第一次尝试重现您的 libgdx 示例时,一切正常。第二次尝试重新导入项目并沿途截屏失败,就像你的一样。从那以后,它一直失败。

显然,从 gradle 导入这个项目时,IntelliJ 以某种方式弄错了类路径。它寻找build/java/main而不是build/kotlin/main.

desktop解决问题 打开项目的模块设置 (F4)并将模块的“模块编译输出路径”更改core为 kotlin 输出路径。只需将java路径中的单词替换为kotlin

//img1.sycdn.imooc.com//639a93ae0001bd7509640571.jpg

然后,当您点击 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


查看完整回答
反对 回复 2022-12-15
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

问题来自该项目具有 Android 模块这一事实。该模块需要全局应用于项目中所有模块的 android gradle 插件,即使那些不是 android 模块的模块。当应用于模块时,它会添加一个Android-Gradle方面,将模块类路径从默认更改out/classesbuild/classes/java. 对于kotlin模块,由于类路径错误导致运行时找不到主类。

目前无法将 android 插件仅应用于 android 模块。解决方法包括修补 android.jar 文件、自动删除同步时的 Android-Gradle facet,或将 android 模块移动到外部项目。没有干净的方法来做到这一点。

该问题已在此处报告,但没有迹象表明它会得到修复。


查看完整回答
反对 回复 2022-12-15
  • 2 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号