java
的jre/lib
包下的jar
比jdk/lib
的多,其中包括rt.jar、jce.jar
等。在使用mvn
命令编译时,使用的是jre
的rt.jar
的运行环境,并且maven
的环境变量仅有rt.jar
的编译依赖,如下图。
但是javax.crypto.spec
在jce.jar
,因此需要在编译插件中加入这个编译依赖,否则会报错,如下图。
maven-compiler-plugin配置如下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<!-- 1.8和1.7都无所谓 -->
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<!-- 什么都不写,默认只有rt.jar -->
<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
注意:${path.separator}
是maven
的环境变量,因为在windows
和linux
下,需要使用不同的分隔符。windows
使用分号,linux
使用冒号。异常信息参见这里。