maven项目编译:程序包com.sun.image.codec.jpeg不存在

描述

maven编译项目提示
程序包com.sun.image.codec.jpeg不存在
然后这个类位于:jre/lib/rt.jar

解决

方案一

java_home下面的lib/dt.jar中没有这个文件,导致编译失败。
通过配置maven-compiler-plugin插件可以解决此问题。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
                <encoding>UTF-8</encoding>
                <compilerArguments>
                    <verbose />
                    <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

缺陷:在windows下面用';'分隔,linux下面用':'分隔。

方案二

更换API

JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os);
en.encode(targetImage);

// 更换为
ImageIO.write(targetImage, "jpg", os);