使用ant与kotlin编译器jar进行连接时发生Java编译器错误

我有一个关于java编译器的非常奇怪的问题。 所以我所做的是在编译时将Kotlin编译器kotlin-compiler-embeddable-1.2-M2.jar到类路径中,不幸的是这会使NullPointerException kotlin-compiler-embeddable-1.2-M2.jar崩溃。 正如你可以从例外中看到的,我使用ANT,但我不认为它是相关的。 最有趣的部分是,如果我用java9编译代码,代码仍然不能编译,但异常是不同的。 我也认为这与我正在编译的源码无关,因为我将该jar添加到具有相同类的另一个项目,并编译并运行。 我用-verbose运行了javac命令,就像那样

 <javac executable="${build_java_home}/${java_command_dir_name}/javac" fork="yes" srcdir="@{srcdir}" destdir="@{destdir}" excludes="@{excludes}" source="1.8" target="1.8" deprecation="yes" includeantruntime="false" debug="true" encoding="utf-8" verbose="true"></javac> 

Java 8

 [javac] [loading ZipFileIndexFileObject[kotlin-compiler-embeddable-1.2-M2.jar(org/jetbrains/kotlin/cli/common/messages/MessageCollector$Companion.class)]] [javac] [loading ZipFileIndexFileObject[kotlin-compiler-embeddable-1.2-M2.jar(org/jetbrains/kotlin/cli/common/messages/MessageCollector$DefaultImpls.class)]] [javac] Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException [javac] at com.sun.tools.javac.main.Main.compile(Main.java:559) [javac] at com.sun.tools.javac.main.Main.compile(Main.java:381) [javac] at com.sun.tools.javac.main.Main.compile(Main.java:370) [javac] at com.sun.tools.javac.main.Main.compile(Main.java:361) [javac] at com.sun.tools.javac.Main.compile(Main.java:56) [javac] at com.sun.tools.javac.Main.main(Main.java:42) [javac] Caused by: java.lang.NullPointerException [javac] at com.sun.tools.javac.code.Types$SameTypeVisitor.visitClassType(Types.java:1138) [javac] at com.sun.tools.javac.code.Types$SameTypeVisitor.visitClassType(Types.java:1091) [javac] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) [javac] at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) [javac] at com.sun.tools.javac.code.Types.isSameType(Types.java:1085) [javac] at com.sun.tools.javac.code.Types.isSameType(Types.java:1080) [javac] at com.sun.tools.javac.model.JavacTypes.isSameType(JavacTypes.java:92) [javac] at threadchecker.TCScanner.isSameType(TCScanner.java:1659) [javac] at threadchecker.TCScanner.visitNewClass(TCScanner.java:1446) [javac] at threadchecker.TCScanner.visitNewClass(TCScanner.java:97) [javac] at com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1532) [javac] at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:68) [javac] at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:81) [javac] at com.sun.source.util.TreeScanner.visitVariable(TreeScanner.java:153) [javac] at threadchecker.TCScanner.visitVariable(TCScanner.java:1608) [javac] at threadchecker.TCScanner.visitVariable(TCScanner.java:97) [javac] at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:864) [javac] at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:68) [javac] at com.sun.source.util.TreeScanner.scan(TreeScanner.java:91) [javac] at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:99) [javac] at com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:133) [javac] at threadchecker.TCScanner.visitClass(TCScanner.java:344) [javac] at threadchecker.TCScanner.visitClass(TCScanner.java:97) [javac] at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:720) [javac] at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:68) [javac] at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:81) [javac] at com.sun.source.util.TreeScanner.scan(TreeScanner.java:91) [javac] at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:99) [javac] at com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:120) [javac] at threadchecker.TCScanner.visitCompilationUnit(TCScanner.java:333) [javac] at threadchecker.TCScanner.visitCompilationUnit(TCScanner.java:97) [javac] at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:550) [javac] at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:68) [javac] at threadchecker.TCPlugin$TCTaskListener.finished(TCPlugin.java:55) [javac] at com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:681) [javac] at com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:111) [javac] at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1342) [javac] at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1296) [javac] at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:901) [javac] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:860) [javac] at com.sun.tools.javac.main.Main.compile(Main.java:523) [javac] ... 5 more 

Java9

 [javac] Exception in thread "main" com.sun.tools.javac.util.PropagatedException: java.lang.IllegalStateException: Cannot use Elements.getTypeElement before the TaskEvent.Kind.ENTER finished event. [javac] at jdk.compiler/com.sun.tools.javac.api.BasicJavacTask.initPlugins(BasicJavacTask.java:216) [javac] at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:276) [javac] at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:162) [javac] at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57) [javac] at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43) [javac] Caused by: java.lang.IllegalStateException: Cannot use Elements.getTypeElement before the TaskEvent.Kind.ENTER finished event. [javac] at jdk.compiler/com.sun.tools.javac.model.JavacElements.ensureEntered(JavacElements.java:765) [javac] at jdk.compiler/com.sun.tools.javac.model.JavacElements.doGetTypeElement(JavacElements.java:168) [javac] at jdk.compiler/com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:157) [javac] at jdk.compiler/com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:84) [javac] at threadchecker.TCScanner.<init>(TCScanner.java:150) [javac] at threadchecker.TCPlugin$TCTaskListener.<init>(TCPlugin.java:42) [javac] at threadchecker.TCPlugin.init(TCPlugin.java:31) [javac] at jdk.compiler/com.sun.tools.javac.api.BasicJavacTask.initPlugins(BasicJavacTask.java:214) [javac] ... 4 more