Ale*_*x R 6 eclipse maven kotlin m2e-wtp
我有一个基于Maven的web应用程序,其中包含多个“本地” Maven依赖项(即,这些依赖项本身就是与主应用程序在同一Eclipse工作区中维护的项目)。
最近,我将Java的依赖项之一重写为Kotlin。以下是Kotlin项目的相关内容pom.xml:
<properties>
<kotlin.version>1.3.50</kotlin.version>
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
<project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version><!--$NO-MVN-MAN-VER$ -->
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.9.9</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
当我尝试在Eclipse中的Tomcat中启动应用程序时,出现错误:
22:40:22 SEVERE: Context initialization failed
[...]
Caused by: java.lang.NoClassDefFoundError: ... (one of my classes from the new project)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1363)
Run Code Online (Sandbox Code Playgroud)
我已经执行了许多故障排除步骤,并且毫无疑问地确定问题是由依赖项目中的Kotlin引起的,即,如果将Kotlin项目还原到原始Java项目,则一切都会恢复。
我如何使用最新版本的Eclipse,Kotlin,Maven,Tomcat和m2e-wtp来解决此问题?
临时解决方法
我可以通过转到“项目”菜单 -> Maven ->“禁用工作空间解析”,然后手动转到每个依赖项项目并执行Maven -> install来使应用程序再次工作。
这是非常不令人满意的,因为当工作区分辨率被禁用时,许多开发人员生产力功能都会丢失。因此,我暂时保留这个问题,并提供赏金,希望能得到更永久的解决方案。
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |