在 IntelliJ IDEA 中编译错误:"No MessageCollector"
Error compiling in IntelliJ IDEA: "No MessageCollector"
编辑:已解决。查看@acdsee 的评论以了解如何。
自从我将 IntelliJ IDEA 从 2017.3.5 更新到 2018.1,我开始的每个项目都会抛出这个错误:
> Error:Module 'JBA' production: java.lang.Exception: LOGGING: Loading
> modules: [java.se, javafx.base, javafx.controls, javafx.fxml,
> javafx.graphics, javafx.media, javafx.swing, javafx.web,
> jdk.accessibility, jdk.attach, jdk.compiler, jdk.dynalink,
> jdk.httpserver, jdk.incubator.httpclient, jdk.jartool, jdk.javadoc,
> jdk.jconsole, jdk.jdi, jdk.jfr, jdk.jshell, jdk.jsobject,
> jdk.management, jdk.management.cmm, jdk.management.jfr,
> jdk.management.resource, jdk.net, jdk.packager, jdk.packager.services,
> jdk.scripting.nashorn, jdk.sctp, jdk.security.auth, jdk.security.jgss,
> jdk.unsupported, jdk.xml.dom, oracle.desktop, oracle.net, java.base,
> java.compiler, java.datatransfer, java.desktop, java.xml,
> java.instrument, java.logging, java.management, java.management.rmi,
> java.rmi, java.naming, java.prefs, java.scripting, java.security.jgss,
> java.security.sasl, java.sql, java.sql.rowset, java.xml.crypto,
> jdk.internal.jvmstat, jdk.management.agent, jdk.jdwp.agent,
> jdk.internal.ed, jdk.internal.le, jdk.internal.opt, jdk.jlink] (no
> MessageCollector configured)
我在 Kotlin 1.2.40 和 Java JDK 10 中遇到了同样的问题。每次更改代码后,我都必须重新构建整个项目以消除编译错误。删除 out 文件夹只会在下一次更改之前有所帮助。我一直在寻找将 Kotlin 插件降级到以前版本的方法,但找到了更好的解决方案。
我的 IDEA 项目没有 Gradle,我通过在项目中添加 Gradle 来解决问题。
直接关闭Project,把下面的文件"build.gradle"放到根目录,然后在IntelliJ IDEA中重新导入Project
我的文件 build.gradle 看起来是这样的:
buildscript {
ext.kotlin_version = '1.2.40'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
sourceSets {
main.java.srcDirs += 'src'
}
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
它现在可以很好地与插件版本 1.2.40 配合使用。没有必要降级到以前的版本。
将评论中的答案提升为答案,因为这是实际答案:
这似乎是 IntelliJ Kotlin 插件 v1.2.40 及其与 Java 10 交互方式中的错误。参见 here。解决方法是升级到v1.2.41.
(不要像其他答案建议的那样,仅仅因为插件坏了就将项目切换为使用 Gradle 构建。这很奇怪。)
编辑:已解决。查看@acdsee 的评论以了解如何。
自从我将 IntelliJ IDEA 从 2017.3.5 更新到 2018.1,我开始的每个项目都会抛出这个错误:
> Error:Module 'JBA' production: java.lang.Exception: LOGGING: Loading
> modules: [java.se, javafx.base, javafx.controls, javafx.fxml,
> javafx.graphics, javafx.media, javafx.swing, javafx.web,
> jdk.accessibility, jdk.attach, jdk.compiler, jdk.dynalink,
> jdk.httpserver, jdk.incubator.httpclient, jdk.jartool, jdk.javadoc,
> jdk.jconsole, jdk.jdi, jdk.jfr, jdk.jshell, jdk.jsobject,
> jdk.management, jdk.management.cmm, jdk.management.jfr,
> jdk.management.resource, jdk.net, jdk.packager, jdk.packager.services,
> jdk.scripting.nashorn, jdk.sctp, jdk.security.auth, jdk.security.jgss,
> jdk.unsupported, jdk.xml.dom, oracle.desktop, oracle.net, java.base,
> java.compiler, java.datatransfer, java.desktop, java.xml,
> java.instrument, java.logging, java.management, java.management.rmi,
> java.rmi, java.naming, java.prefs, java.scripting, java.security.jgss,
> java.security.sasl, java.sql, java.sql.rowset, java.xml.crypto,
> jdk.internal.jvmstat, jdk.management.agent, jdk.jdwp.agent,
> jdk.internal.ed, jdk.internal.le, jdk.internal.opt, jdk.jlink] (no
> MessageCollector configured)
我在 Kotlin 1.2.40 和 Java JDK 10 中遇到了同样的问题。每次更改代码后,我都必须重新构建整个项目以消除编译错误。删除 out 文件夹只会在下一次更改之前有所帮助。我一直在寻找将 Kotlin 插件降级到以前版本的方法,但找到了更好的解决方案。
我的 IDEA 项目没有 Gradle,我通过在项目中添加 Gradle 来解决问题。
直接关闭Project,把下面的文件"build.gradle"放到根目录,然后在IntelliJ IDEA中重新导入Project
我的文件 build.gradle 看起来是这样的:
buildscript {
ext.kotlin_version = '1.2.40'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
sourceSets {
main.java.srcDirs += 'src'
}
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
它现在可以很好地与插件版本 1.2.40 配合使用。没有必要降级到以前的版本。
将评论中的答案提升为答案,因为这是实际答案:
这似乎是 IntelliJ Kotlin 插件 v1.2.40 及其与 Java 10 交互方式中的错误。参见 here。解决方法是升级到v1.2.41.
(不要像其他答案建议的那样,仅仅因为插件坏了就将项目切换为使用 Gradle 构建。这很奇怪。)