Maven 編譯使用 rt.jar

項目在使用mvn clean package 打包的時候出現(xiàn) com.sun.image.codec.jpeg.JPEGCodec 是 Sun 的專用 API 這樣的編譯錯誤提示時,我們需要在maven編譯插件中指定參數(shù) rt.jar 文件。因為 rt.jar 是jre 中自帶的 jar 包,所以才使用編譯參數(shù)的方式使用。

因為在windows下,這個分隔符應(yīng)該是“分號”,而在Linux 下這個分隔符必須是“冒號”,無論我們寫死哪一種都是不兼容的,所以maven為我們提供了這樣的變量 ${path.separator}

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 參數(shù)指定了2個 jar 文件。
第一是我項目中需要這2個文件編譯。
第二我是為了說明另外一個問題:就是當我們需要指定多個 jar 的時候,中間的分隔符,要使用maven內(nèi)置變量 ${path.separator} 來指定。因為在windows下,這個分隔符應(yīng)該是“分號”,而在Linux 下這個分隔符必須是“冒號”,無論我們寫死哪一種都是不兼容的,所以maven為我們提供了這樣的變量,可以自動根據(jù)操作系統(tǒng)來使用對應(yīng)的分隔符。

所以maven分隔符變量 ${path.separator} 我們可能在其他配置的時候也會使用到,大家回想一下在Linux下和在Windows下配置環(huán)境變量時的分隔符就知道了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容