解决 maven 编译错误:程序包 com.sun.xml.internal.ws.client.BindingProviderProperties 不存在

  当 maven 项目中用到 webservice 时,有用到 JDK 内部的一些接口,如下所示。

import com.sun.xml.internal.ws.client.BindingProviderProperties;
import com.sun.xml.internal.ws.developer.JAXWSProperties;

  用 maven 编译一般会出现如下错误:

[ERROR] COMPILATION ERROR :
[ERROR] com.sun.xml.internal.ws.client.BindingProviderProperties
[ERROR] com.sun.xml.internal.ws.developer.JAXWSProperties
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project test: Compilation failure: Compilation failure:
[ERROR] 程序包com.sun.xml.internal.ws.client.BindingProviderProperties不存在
[ERROR] 程序包com.sun.xml.internal.ws.developer.JAXWSProperties不存在
[ERROR] -> [Help 1]

  经查看发现,以上缺失的包为 JDK 中的 rt.jar 中的接口。
  解决方法是,在 pom.xml 文件,添加 maven-compiler-plugin 插件,并且配置compilerArguments,将 rt.jar 路径配置到 bootclasspath,具体实现时有多种方法。
   1. 方法一:pom 文件自定义 JDK 路径。
  pom.xml 文件配置 java.home 属性值,指向开发者本机 JDK 路径,然后再将 /jre/lib/ 路径下的 rt.jar 配置到 bootclasspath,具体实现如下所示。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>
                        <bootclasspath>${java.home}/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>

  这里的 rt.jar 需要配置正确的路径,pom.xml 文件添加如下关于 java.home 的配置,配置成开发环境的 JDK 路径即可。

<properties>
	<java.home>C:\Program Files\Java\jdk1.8.0_101</java.home>
</properties>

  这样的不便之处是,团队中的每个开发者本机 JDK 环境地址不同,编译时需额外修改地址。

   2. 方法二:继承 maven 配置的 java home 环境变量。
  命令行 mvn -v 查看本机 maven 配置,如下所示。

$ mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 21:51:28+0800)
Maven home: G:\Program Files (x86)\apache-maven-3.0.5-bin\apache-maven-3.0.5
Java version: 1.8.0_101, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_101\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

由此可见,java.home 配置信息是:C:\Program Files\Java\jdk1.8.0_101\jre,此时需要将 bootclasspath 修改为如下配置。

			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>
						<bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>

  此时无需在 pom.xml 文件中额外配置 java.home 属性。

   3. 方法三:使用系统 JAVA_HOME 环境变量指向的路径。
  所有环境变量都可以使用以 env. 开头的 Maven 属性引用。例如 ${env.JAVA_HOME}指代了 JAVA_HOME 环境变量的值。也可以通过命令行 mvn help:system 查看所有环境变量。
  经查看,本机 JAVA_HOME=C:/Program Files/Java/jdk1.8.0_101,pom.xml 文件可做如下配置。

			<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>			
                    	<bootclasspath>${env.JAVA_HOME}/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>

  任选一种方法配置好之后,再编译打包,即可编译成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值