在Eclipse中混合Kotlin和Java无法正常工作

时间:2018-12-03 18:20:16

标签: java eclipse maven kotlin

我有一个多模块Maven项目。一个模块是带有Spring MVC的webapp。

我想尝试将其与Kotlin混合使用,因此从Eclipse Marketplace安装了Kotlin Plugin for Eclipse,并将Kotlin Nature添加到了所有模块中。

这是pom.xml主菜单中的Maven设置。

Maven属性:

<properties>
    <maven.compiler.target>10</maven.compiler.target>
    <maven.compiler.source>10</maven.compiler.source>
    <kotlin.version>1.2.60</kotlin.version>
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
</properties>

Kotlin依赖项:

<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-stdlib-jdk8</artifactId>
    <version>${kotlin.version}</version>
</dependency>

<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-runtime</artifactId>
    <version>${kotlin.version}</version>
</dependency>

插件:

<build>
    <plugins>

        <plugin>
            <artifactId>kotlin-maven-plugin</artifactId>
            <groupId>org.jetbrains.kotlin</groupId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                            <sourceDir>${project.basedir}/src/main/java</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                            <sourceDir>${project.basedir}/src/test/java</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <executions>
                <execution>
                    <id>default-compile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>default-testCompile</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>java-compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>java-test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
        </plugin>

    </plugins>
</build>

我在一个模块中删除了我所有的POJO,并按照此this问题中的说明在src/main/kotlin文件夹中的Kotlin中重写了它们。

也将src/main/kotlin放在类路径上。其余的Java文件位于src/main/java中。

构建成功。 .class文件似乎已生成到Kotlin Runtime Library/kotlin_bin/<package_name>

但是在我使用Tomcat启动webapp模块之后,我得到了NoClassDefFoundError引起的ClassNotFoundException。找不到这些用Kotlin编写的新类。

如果我查看目标文件夹,也没有.class文件,那里只有.kt个文件。

在我看来,.class文件已创建,但无法在运行时使用它们。

我还阅读了official website上的解决方案,但是我无法使其正常工作。

只有1个模块具有.kt个源文件,但是我尝试将kotlin文件夹放在每个模块的主文件夹中,但仍然没有。

0 个答案:

没有答案