Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
解决与Maven的库冲突_Maven_Kotlin - Fatal编程技术网

解决与Maven的库冲突

解决与Maven的库冲突,maven,kotlin,Maven,Kotlin,从kotlin 1.4.30开始,kotlin编译器可嵌入依赖项在其主jar包中包含了“fastutil”库的文件。此问题与pom.xml文件中本地指定的fastutil版本冲突 是否有任何方法可以包含1.4.30 kotlin编译器可嵌入依赖项并忽略/it/unimi/dsi/fastutil文件夹,这样它将只使用我指定的版本 kotlin编译器可嵌入布局的屏幕截图: 项目在这里: import it.unimi.dsi.fastutil.ints.int2objtopenhashmap//

从kotlin 1.4.30开始,kotlin编译器可嵌入依赖项在其主jar包中包含了“fastutil”库的文件。此问题与pom.xml文件中本地指定的fastutil版本冲突

是否有任何方法可以包含1.4.30 kotlin编译器可嵌入依赖项并忽略/it/unimi/dsi/fastutil文件夹,这样它将只使用我指定的版本

kotlin编译器可嵌入布局的屏幕截图:

项目在这里:

import it.unimi.dsi.fastutil.ints.int2objtopenhashmap//从kotlin编译器可嵌入库默认导入
趣味主线(args:Array){
// http://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap.html#%3Cinit%3E(国际)
//^当您没有kotlin编译器可嵌入冲突时,这是可能的
//因为它是从kotlin编译器可嵌入库导入此类的
//而不是fastutil库本身
val map=Int2ObjectOpenHashMap(10)
println(“你好,世界!”)
}

Maven 2.0.9早在2008年就在类路径上引入了依赖项的确定性排序

如果您有两个包含相同类的依赖项,pom中提到的第一个将获胜

您可以使用
mvn dependency:buildclasspath
检查类路径

在您的情况下,将fastutil放在kotlin编译器之前

<dependency>
    <groupId>it.unimi.dsi</groupId>
    <artifactId>fastutil</artifactId>
    <version>8.2.1</version>
</dependency>
<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-compiler-embeddable</artifactId>
    <version>1.4.30</version>
</dependency>

it.unimi.dsi

  • 如果您打算将您的应用程序作为uber jar分发,请确保检查您的打包操作。Maven shade插件具有强大的过滤工具
  • 尽管依赖类路径顺序实现起来很快,而且可以正常工作,但它可能会令人惊讶。考虑在没有FASTLIB的情况下重新打包KOTLIN编译器依赖项。

  • 我为它创建了一个官方的kotlin bug。请看,包含的任何第三方库都应该在不同的包中加前缀,或者从最终的jar中排除。
    <dependency>
        <groupId>it.unimi.dsi</groupId>
        <artifactId>fastutil</artifactId>
        <version>8.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-compiler-embeddable</artifactId>
        <version>1.4.30</version>
    </dependency>