2017-08-12 156 views
0

在试图编译Java /科特林混合项目,我收到以下错误:为什么我的Kotlin编译失败使用Kotlin-Maven-Plugin?

[ERROR] Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:1.1.3-2:compile (compile) on project tablesaw-core: Compilation failure 
[ERROR] java.lang.ArrayIndexOutOfBoundsException: 32 
[ERROR] at org.jetbrains.org.objectweb.asm.ClassReader.readUTF8(ClassReader.java:2529) 
[ERROR] at org.jetbrains.org.objectweb.asm.ClassReader.readModule(ClassReader.java:777) 
[ERROR] at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:646) 
[ERROR] at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:507) 
[ERROR] at org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleInfo$Companion.read(JavaModuleInfo.kt:51) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder.computeAllSystemModules$kotlin_compiler(CliJavaModuleFinder.kt:28) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.computeRootModules(KotlinCoreEnvironment.kt:298) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.addModularRoots(KotlinCoreEnvironment.kt:277) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.convertClasspathRoots(KotlinCoreEnvironment.kt:269) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:197) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:109) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:423) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:240) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createEnvironmentWithScriptingSupport(K2JVMCompiler.kt:230) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:189) 
[ERROR] at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:55) 
[ERROR] at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:182) 
[ERROR] at org.jetbrains.kotlin.maven.KotlinCompileMojoBase.execCompiler(KotlinCompileMojoBase.java:236) 
[ERROR] at org.jetbrains.kotlin.maven.K2JVMCompileMojo.execCompiler(K2JVMCompileMojo.java:184) 
[ERROR] at org.jetbrains.kotlin.maven.K2JVMCompileMojo.execCompiler(K2JVMCompileMojo.java:43) 
[ERROR] at org.jetbrains.kotlin.maven.KotlinCompileMojoBase.execute(KotlinCompileMojoBase.java:219) 
[ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
[ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
[ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
[ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
[ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
[ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
[ERROR] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native Method) 
[ERROR] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:62) 
[ERROR] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43) 
[ERROR] at java.lang.reflect.Method.invoke([email protected]/Method.java:533) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 

我使用Maven 3.3.9与科特林1.1.3-2和Java 1.8

在谷歌搜索对于类似的问题,我看到了使用ClassReader的其他代码的类似结果。这些问题归因于版本不匹配,但这些示例并未使用Kotlin,我认为我的版本可以。

我的POM文件是:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>tech.tablesaw</groupId> 
    <artifactId>tablesaw-parent</artifactId> 
    <version>0.8-SNAPSHOT</version> 
</parent> 

<artifactId>tablesaw-core</artifactId> 
<version>0.8-SNAPSHOT</version> 

<packaging>jar</packaging> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>3.0.2</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-gpg-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.sonatype.plugins</groupId> 
      <artifactId>nexus-staging-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.jetbrains.kotlin</groupId> 
      <artifactId>kotlin-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>org.jetbrains.kotlin</groupId> 
     <artifactId>kotlin-stdlib-jre8</artifactId> 
     <version>${kotlin.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jetbrains.kotlin</groupId> 
     <artifactId>kotlin-test-junit</artifactId> 
     <version>${kotlin.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

+0

根据您尝试在JDK 9上运行的消息,而不是在JDK 8上运行的消息...请参阅'[email protected]/Native Method ...'? – khmarbaise

+1

确实是这个问题。谢谢。如果你让这个答案我会接受。 –

+0

除此之外,您不应该在您的pom文件中定义所有插件,因为构建生命周期会定义它们,或者可能会更好地在pluginManagement部分中定义它们,包括插件的版本。 – khmarbaise

回答

1

此版本是在JDK9运行,而不是在JDK 8基于日志输出中提到,你可以看到这样的事情:

[email protected]/Native Method... 

这是有关JDK 9使用情况的提示。