Nic*_*las 7 java jvm intellij-idea kotlin
我在IntelliJ IDEA 2019.1.3中使用Gradle创建了一个项目,其主类如下所示:
public final class Main {
public static void main(String[] args) {
// Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但是每次我尝试启动程序时,它总是显示相同的错误:
Error: Could not find or load main class com.example.Main
Caused by : java.lang.ClassNotFoundException: com.example.Main
Run Code Online (Sandbox Code Playgroud)
我正在使用应用程序配置模板。我尝试了以下方法:
Main.class该build/文件夹下和生成的jar文件中实际上都有一个文件。我知道的唯一解决方案是使用gradle任务运行:
task run(type: JavaExec) {
main = "com.example.MainKt"
classpath = sourceSets.main.get().runtimeClasspath
standardInput = System.in
isIgnoreExitValue = true
}
Run Code Online (Sandbox Code Playgroud)
但是我宁愿不这样做,因为控制台将不接受输入,由于某种原因不支持unicode,而且我无法像IntelliJ的配置窗口一样容易地传递程序参数。
有谁遇到过这个问题,如何解决?自从我更新到IntelliJ 2019.1以来,这只是我自己发生的事情,它在2018.3.6的大部分时间里都运行良好。
编辑2:最初的问题是关于Kotlin,但我意识到我与Java遇到相同的错误。
尝试重新生成您的libgdx示例时,一切都第一次起作用。像您一样,第二次尝试重新导入项目并拍摄屏幕截图的尝试失败了。从那时起,它一直在失败。
显然,从gradle导入此项目时,IntelliJ会以某种方式使classpath错误。它寻找build/java/main而不是build/kotlin/main。
要解决此问题打开项目的模块设置(F4)和改变模块的“模块编译输出路径” desktop和core到科特林输出路径。只需将java路径中的单词替换为kotlin:
然后,当您点击主方法旁边的“运行”按钮时,它将失败,如下所示:
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.
Run Code Online (Sandbox Code Playgroud)
可以通过编辑启动配置并添加-XstartOnFirstThread到VM选项来解决此问题。
下次尝试失败,但出现此异常。
com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load dependencies of asset: libgdx.png
Run Code Online (Sandbox Code Playgroud)
当将启动配置中的工作目录更改为android/assets目录时,就像您在gradle任务中所做的那样,演示将成功启动。
为了记录我的环境:
OS: MacOs Mojave
JVM: openjdk version "1.8.0_212" (AdoptOpenJDK)
IntelliJ: 2019.1.3 Ultimate Edition
Run Code Online (Sandbox Code Playgroud)
问题来自于该项目有一个 Android 模块。该模块需要 android gradle 插件,该插件全局应用于项目中的所有模块,甚至那些不是 android 模块的模块。当应用于模块时,它会添加一个Android-Gradle方面,将模块类路径从默认更改out/classes为build/classes/java. 对于 kotlin 模块,由于类路径错误,在运行时找不到主类。
目前还没有办法将 android 插件仅应用于 android 模块。解决方法包括修补 android.jar 文件、同步时自动删除 Android-Gradle 方面,或将 android 模块移动到外部项目。没有干净的方法可以做到这一点。
该问题已在此处报告,但没有迹象表明该问题将得到解决。
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |