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

编译失败原因:

       JDK7的时候,com.sun.image.codec.jpeg类已经退休了,以后凡是带sun.*的类库将不会被支持。javac在编译代码时,当他尝试从rt.jar中找寻对应的类文件时,他会默认从对应的符号表文件ct.sym (同样在jre/lib/下)中查找该类是否存在,由于ct.sym中有意或无意的遗失了部分rt.jar中的类,包括com.sun.image.codec.jpeg,因此导致编译报错。

解决方法:

       通知javac编译器,在编译代码时,忽略该符号表ct.sym, 直接查找rt.jar,通过给javac传入对应的参数完成:

-XDignore.symbol.file

       Ant,Javac编译器本身都是用Java语言实现的,所以运行Ant和执行Javac任务使用同一个JVM实例;这是高效的表现。Ant的Javac任务的默认行为是调用运行Ant本身的任何JVM的标准编译器,然而如果你想要单独地调用编译器,比如你要使用一个高级别的编译器,你可以使用javac的fork属性:

true

pom修改如下

           
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    1.7
                    1.7
                    utf-8
                    -XDignore.symbol.file
                    true

                

            


参考:

https://blog.csdn.net/javakakayi/article/details/51504587

https://blog.csdn.net/lday/article/details/18705837

https://www.cnblogs.com/dzblog/p/6971245.html

https://blog.csdn.net/ssh000/article/details/2482831

你可能感兴趣的:(java)