Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Kotlin的Maven依赖项不引入Kotlin类_Java_Maven_Dependencies_Kotlin - Fatal编程技术网

Java 使用Kotlin的Maven依赖项不引入Kotlin类

Java 使用Kotlin的Maven依赖项不引入Kotlin类,java,maven,dependencies,kotlin,Java,Maven,Dependencies,Kotlin,我有两个项目,一个依赖于另一个。我已经将依赖项项目转换为Kotlin,但是现在当maven从本地maven存储库中提取已发布的依赖项时,父项目没有接收依赖项所需的Kotlin内部库 大纲: 这导致运行主项目时出现java.lang.ClassNotFoundException:kotlin.jvm.internal.Intrinsics异常 现在的Kotlin项目在pom.xml中定义了Kotlin maven插件和Kotlin stdlib 父项目将now Kotlin项目列为依赖项,并且正确

我有两个项目,一个依赖于另一个。我已经将依赖项项目转换为Kotlin,但是现在当maven从本地maven存储库中提取已发布的依赖项时,父项目没有接收依赖项所需的Kotlin内部库

大纲: 这导致运行主项目时出现
java.lang.ClassNotFoundException:kotlin.jvm.internal.Intrinsics
异常

现在的Kotlin项目在pom.xml中定义了
Kotlin maven插件和
Kotlin stdlib

父项目将now Kotlin项目列为依赖项,并且正确导入该项目,找到并使用其类,等等。。。在IntelliJ中,一切都很好

在tomcat上编译和启动主项目的应用程序一直正常工作,直到第一次调用now Kotlin项目的代码,这导致

org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
....
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
我的假设是,Kotlin库将遵循Maven的正常依赖规则,并且
Kotlin stdlib
中的
org.jetbrains.Kotlin
包将与任何可传递依赖项一样包含在内

将这些依赖项包含到主项目中的正确方法是什么

更新 主项目
mvn依赖关系:树
相关部分:

[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ example-core ---
[INFO] com.example:example-core:jar:1.17.0-SNAPSHOT
[INFO] +- com.example.service.search:search-client:jar:kotlin:2.0.3-SNAPSHOT:compile
主要项目POM

...
<dependency>
    <groupId>com.example.service.search</groupId>
    <artifactId>search-client</artifactId>
    <version>2.0.3-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>
...
...
<properties>
    <kotlin.version>1.1.2-2</kotlin.version>
</properties>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <version>${kotlin.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
。。。
com.example.service.search
搜索客户端
2.0.3-快照
编译
...
新Kotlin项目POM

...
<dependency>
    <groupId>com.example.service.search</groupId>
    <artifactId>search-client</artifactId>
    <version>2.0.3-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>
...
...
<properties>
    <kotlin.version>1.1.2-2</kotlin.version>
</properties>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <version>${kotlin.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
。。。
1.1.2-2
...
org.jetbrains.kotlin
科特林标准实验室
${kotlin.version}
org.jetbrains.kotlin
科特林试验
${kotlin.version}
测试
...
org.jetbrains.kotlin
kotlin maven插件
${kotlin.version}
编译
编译
编译
测试编译
测试编译
测试编译

您关于
kotlin stdlib
依赖关系的假设是正确的-这就是传递依赖关系应该如何工作的。您可以运行
mvn dependency:tree
mvn dependency:list
来分析哪些依赖项被拉入主项目。此外,在tomcat上运行应用程序时,您还应该检查使用了什么类路径。感谢您提供的信息!运行maven依赖项检查不会显示now Kotlin项目的任何子依赖项。如果我将主项目上的依赖项切换回项目的非Kotlin版本,则
mvn dependency:tree
包含正确的子依赖项。您能否在问题中显示pom块,其中您将Kotlin stdlib依赖项添加到新的Kotlin项目中,主项目中是否存在对新Kotlin项目的依赖关系?我已经更新了这个问题。是否您只是在
dependencyManagement
块中声明了新Kotlin项目的依赖关系,但实际上没有在
dependencies
顶级块中应用它们?