Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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/maven/5.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 创建和使用自定义jar文件时出现问题_Java_Maven_Jar_Dependencies - Fatal编程技术网

Java 创建和使用自定义jar文件时出现问题

Java 创建和使用自定义jar文件时出现问题,java,maven,jar,dependencies,Java,Maven,Jar,Dependencies,我已经准备了一些util类。 我计划将它们制作成jar,并将其分发到所需的项目中 我的util类使用一些已经存在的自定义代码,这些代码以jar文件的形式提供 我的代码依赖于“MainUtil.jar”,而“MainUtil.jar”在内部依赖于Javaservlet、Commons IO、Commons编解码器等等 我的POM依赖项如下所示 <dependency> <groupId>com.solutions</groupId> <ar

我已经准备了一些util类。 我计划将它们制作成jar,并将其分发到所需的项目中

我的util类使用一些已经存在的自定义代码,这些代码以jar文件的形式提供

我的代码依赖于“MainUtil.jar”,而“MainUtil.jar”在内部依赖于Javaservlet、Commons IO、Commons编解码器等等

我的POM依赖项如下所示

<dependency>
    <groupId>com.solutions</groupId>
    <artifactId>sol-core</artifactId>
    <version>2.3</version>          
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-ws-security</artifactId>
    <version>${cxf.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-ws-policy</artifactId>
    <version>${cxf.version}</version>
</dependency>
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk16</artifactId>
    <version>1.46</version>
</dependency>

com.solutions
溶胶芯
2.3
org.apache.cxf
cxf rt ws-security
${cxf.version}
org.apache.cxf
cxf rt ws策略
${cxf.version}
org.bouncycastle
bcprov-jdk16
1.46
当我包装我的罐子时,它看起来很好

但是,当我的jar用于使用这些my util类的项目时,我会看到一个wierd问题

打包时,commonc编解码器jar文件不包含在项目包中。 另外,需要此通用编解码器的代码也失败了

当我明确地包含commons编解码器依赖项时,一切都正常工作

我的困惑是,既然Maven应该基于自定义jar文件的POM来解析我,为什么还要显式地添加编解码器依赖项呢。
以及为什么这个问题只发生在commons编解码器上,而不发生在其他依赖项上。

您的代码依赖于所有其他JAR。为项目创建jar时,jar文件并不包含所有依赖的jar类


无论您在哪里使用jar,都必须使用其他依赖jar。您没有提到您是否也在使用maven。如果是,那么如果您定义了依赖关系,那么所有依赖JAR都将位于类路径中。

解决依赖关系的问题是

项目中现有的依赖项可能对此jar进行了一些依赖项管理。这就是为什么旧jar优先于您的自定义jar依赖项。 请尝试在已有的jar中为这个通用编解码器jar添加排除


然后一切都会好起来。

您可以展示一下您是如何定义对commons codec的依赖关系的吗?在您添加自定义jar的项目中,是否存在已经使用codec jar的依赖关系?是的。此项目中的一个现有依赖项已引用公共编解码器。这有什么影响吗?
<dependency>
 <... Your existing dependency ..>
     <exclusions>
            <exclusion>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
            </exclusion>
        </exclusions>
</dependency>
 mvn dependency:resolve