本文介绍了 maven 打包过程中遇到下面问题信息的解决
- Compilation failure
- 程序包com.sun.xml.internal.messaging.saaj.util不存在
- 程序包com.sun.org.apache.xml.internal.security.exceptions不存在
- 程序包com.sun.org.apache.xml.internal.security.utils不存在
- 符号: 类 ByteInputStream
- 致命错误: 在类路径或引导类路径中找不到程序包 java.lang
- An unknown compilation problem occurred
在项目中 新增一个变量 ByteInputStream
windows 本idea中命令行 maven打包项目:mvn clean package
结果报错如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project bootclasspath_demo: Compilation failure: Compilation failure:
[ERROR] /E:/workspace_idea/bootclasspath_demo/src/main/java/com/example/bootclasspath_demo/utils/Http.java:[3,48] 程序包com.sun.xml.internal.messaging.saaj.util不存在
[ERROR] /E:/workspace_idea/bootclasspath_demo/src/main/java/com/example/bootclasspath_demo/utils/Http.java:[425,16] 找不到符号
[ERROR] 符号: 类 ByteInputStream
[ERROR] 位置: 类 com.example.bootclasspath_demo.utils.Http
[ERROR] /E:/workspace_idea/bootclasspath_demo/src/main/java/com/example/bootclasspath_demo/utils/Http.java:[456,17] 找不到符号
[ERROR] 符号: 类 ByteInputStream
[ERROR] 位置: 类 com.example.bootclasspath_demo.utils.Http
[ERROR] /E:/workspace_idea/bootclasspath_demo/src/main/java/com/example/bootclasspath_demo/utils/Http.java:[456,43] 找不到符号
[ERROR] 符号: 类 ByteInputStream
[ERROR] 位置: 类 com.example.bootclasspath_demo.utils.Http
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
解决方法:
pom.xml 增加 bootclasspath,如下:
注意:C:/Program Files/Java/jdk1.8.0_201/jre/lib/ 是我本地jdk安装后存在的目录,每个人可能不同,不要盲目复制,请自己去找到jdk安装目录确认.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>libs</extdirs>
<!-- C:/Program Files/Java/jdk1.8.0_201 是我本地安装的jdk家目录,rt.jar等jar 我在 jdk家目录下的 /jre/lib/ 目录中有发现存在,你们需要注意确认自己的实际情况,Windows分隔符英文分号,linux分隔符英文冒号 -->
<bootclasspath>C:/Program Files/Java/jdk1.8.0_201/jre/lib/rt.jar;C:/Program Files/Java/jdk1.8.0_201/jre/lib/jce.jar;C:/Program Files/Java/jdk1.8.0_201/jre/lib/jsse.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
完整的pom.xml 中 build, 如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>libs</extdirs>
<!-- C:/Program Files/Java/jdk1.8.0_201 是我本地安装的jdk家目录,rt.jar等jar 我在 jdk家目录下的 /jre/lib/ 目录中有发现存在,你们需要注意确认自己的实际情况,Windows分隔符英文分号,linux分隔符英文冒号 -->
<bootclasspath>C:/Program Files/Java/jdk1.8.0_201/jre/lib/rt.jar;C:/Program Files/Java/jdk1.8.0_201/jre/lib/jce.jar;C:/Program Files/Java/jdk1.8.0_201/jre/lib/jsse.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
注:下面说说我在网上找了很多文章解决上述问题遇到的各种坑的过程
网上很多写的解决这个问题的文章都是 ${java.home}/lib/rt.jar ,至少对我当前环境来说是错的,如下:
<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
我本地jdk里面有rt.jar , jce.jar , jsse.jar 的目录是 JAVA_HOME/jre/lib/rt.jar ,而网上写的都是${java.home}/lib/rt.jar 路径对不上,前者是"/jre/lib/rt.jar" 后者是 “/lib/rt.jar” 。所以根本找不到 rt.jar 等jar包
最后 附上测试的源码
链接:https://pan.baidu.com/s/1TgqiLGvMAhIadD_hjWJDFA
提取码:a4k4
注意:下载验证之前,请确认本地安装的jdk, rt.jar的jar包的位置是不是我代码里面的一致,如果不是,根据实际情况修改。
打包过程:
打包成功,如下