天天看點

Maven 編譯使用 rt.jar

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 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下配置環境變量時的分隔符就知道了。