由于导入了mavenjar,所以javax.xml.namespace.qname增加了一倍

qv7cva1a  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(383)

在我的任何webproject中使用maven创建jar都有问题。
到目前为止我所做的:我已经实现了一个webservice,用于在不同的web项目上进行身份验证。因此,authenticationthing独立于任何webproject运行,并且可以在将来的项目中用于对同一个用户库进行身份验证。所以webservice已经启动并运行了,我创建了一个新的maven项目,并将所有必要的文件(包括我自己的描述接口的webservice以及jax-ws所需的所有包)打包到一个jar中。这对我来说已经是一段相当长的旅程,但我通过以下依赖项实现了它:

<dependencies>
    <!-- jax-ws maven dependency -->
    <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.1.3</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.jws/javax.jws-api -->
    <dependency>
        <groupId>javax.jws</groupId>
        <artifactId>javax.jws-api</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.messaging.saaj</groupId>
        <artifactId>saaj-impl</artifactId>
        <version>1.5.1</version>
    </dependency>
</dependencies>

我还添加了maven程序集插件,以获得一个包含所有依赖项的jar:

<!-- Maven Assembly Plugin -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>
    <configuration>
        <!-- get all project dependencies -->
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <!-- MainClass in mainfest make a executable jar -->
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <!-- bind to the packaging phase -->
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

因此,当我从eclipse运行maven安装时,我将jar放在目标文件夹中。
现在问题开始了。当我将这个jar添加到eclipse中的dynamicwebproject中以使用auth接口以及maven jar中必要的jax-ws-libs时,我得到一个编译错误:

The package javax.xml.namespace is accessible from more than one module: <unnamed>, java.xml

这是真的。当我查看jar时,我可以看到其中确实有一个javax.xml.namespace.qname类:

所以我想这是因为我的一个依赖项也拉了这个包,而且它是唯一一个通过jre仍然可用的(?)包(不像其他所有外包的javax.xml.ws包,它首先触发了所有maven包)。那现在该怎么办呢?我可以指定应该使用哪个qname(显然是来自jre的qname)吗?或者我可以从maven jar中排除javax.xml.namespace吗?
我完全不知道该怎么办。。。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题