版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/catoop/article/details/63251628
項目在使用mvn clean package 打包的時候出現 com.sun.image.codec.jpeg.JPEGCodec 是 Sun 的專用 API 這樣的編譯錯誤提示時,我們需要在maven編譯插件中指定參數 rt.jar 檔案。因為 rt.jar 是jre 中自帶的 jar 包,是以才使用編譯參數的方式使用。
pom.xml 的代碼片段如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose />
<bootclasspath>${JAVA_HOME}/jre/lib/rt.jar${path.separator}${JAVA_HOME}/jre/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
<!-- 你項目中需要的其他插件本例忽略 -->
</plugins>
</build>
主要我上面的 bootclasspath 參數指定了2個 jar 檔案。
第一是我項目中需要這2個檔案編譯。
第二我是為了說明另外一個問題:就是當我們需要指定多個 jar 的時候,中間的分隔符,要使用maven内置變量 ${path.separator} 來指定。因為在windows下,這個分隔符應該是“分号”,而在Linux 下這個分隔符必須是“冒号”,無論我們寫死哪一種都是不相容的,是以maven為我們提供了這樣的變量,可以自動根據作業系統來使用對應的分隔符。
是以maven分隔符變量 ${path.separator} 我們可能在其他配置的時候也會使用到,大家回想一下在Linux下和在Windows下配置環境變量時的分隔符就知道了。