有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javax。imageio java。util。ServiceConfigurationError:无法实例化提供程序

我有一个.jp2图像文件,我想转换成.jpg

    BufferedImage background = ImageIO.read(new File("images\\"
    + randNum + ".jp2"));
    ImageIO.write(background, "jpg", new File("images\\" + randNum
                + ".jpg"));

我有一个例外:

java.util.ServiceConfigurationError: javax.imageio.spi.ImageWriterSpi:  Provider com.github.jaiimageio.jpeg2000.impl.J2KImageWriterSpi could not be instantiated
 ...
Caused by: java.lang.NoClassDefFoundError: com/github/jaiimageio/impl/common/PackageUtil
 ...
Caused by: java.lang.ClassNotFoundException: com.github.jaiimageio.impl.common.PackageUtil

共 (2) 个答案

  1. # 1 楼答案

    显然,发生了冲突,我使用了来自不同库的类,这里我有jai_imageiojai-imageio-jpeg2000,我只需删除其中一个就解决了这个问题

  2. # 2 楼答案

    我运行了这段代码,它创建了一个新的jpg文件。我希望这对你有帮助

    package yourPackage;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    public class ImageConverter {
    
    
        public static void main(String[] args) throws IOException {
            int randNum = 1;
            convertImage(randNum);      
    
        }
    
        private static void convertImage(int randNum) throws IOException {
            try {
                File foundFile = new File("c:\\images\\" + randNum + ".jp2");   
                BufferedImage background = ImageIO.read(foundFile);
                ImageIO.write(background, "jpg", new File("c:\\images\\" + randNum + ".jpg"));
                System.out.println("jpg file is generated");
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("No file " + randNum +".jp2 found");
            }
    
        }
    }