基本的にクライアント側から JSON を受け取り、PDF を作成/返す Spring Boot アプリがあります。
問題なくJPG画像を読み込めます。しかし、PNGファイルをロードすると、この例外が発生します。私のSpring Boot「war」アプリはTomcat内で実行されています。
「java -jar ...」でSpring Bootアプリを実行するとうまくいきます。
- アパッチ トムキャット/9.0.29
- ヘッドレス OpenJDK 64 ビット VM 1.8
- スプリング ブート 2.2.1
- OpenPDF 1.3
- CentOS Linux 7
2020-02-24 01:57:14,042 ERROR [http-nio-8080-exec-217] org.springframework.boot.web.servlet.support.ErrorPageFilter: Forwarding to error page from request [/pdf/create] due to exception [Could not initialize class java.awt.image.DataBuffer]
java.lang.NoClassDefFoundError: Could not initialize class java.awt.image.DataBuffer
at javax.imageio.ImageTypeSpecifier.createComponentCM(ImageTypeSpecifier.java:249)
at javax.imageio.ImageTypeSpecifier$Interleaved.<init>(ImageTypeSpecifier.java:305)
at javax.imageio.ImageTypeSpecifier.createInterleaved(ImageTypeSpecifier.java:399)
at javax.imageio.ImageTypeSpecifier.createSpecifier(ImageTypeSpecifier.java:1169)
at javax.imageio.ImageTypeSpecifier.getSpecifier(ImageTypeSpecifier.java:1118)
at javax.imageio.ImageTypeSpecifier.createFromBufferedImageType(ImageTypeSpecifier.java:901)
at com.sun.imageio.plugins.png.PNGImageReader.getImageTypes(PNGImageReader.java:1531)
at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1318)
at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1614)
at javax.imageio.ImageIO.read(ImageIO.java:1462)
at javax.imageio.ImageIO.read(ImageIO.java:1357)
at com.lowagie.text.ImageLoader.getPngImage(ImageLoader.java:76)
at com.lowagie.text.Image.getInstance(Image.java:284)
at com.company.myapp.service.pdf.pages.Page00.render(Page00.java:69)
at com.company.myapp.service.pdf.pages.PageImpl.<init>(PageImpl.java:27)
at com.company.myapp.service.pdf.pages.Page00.<init>(Page00.java:21)
at com.company.myapp.service.PdfServiceImpl.getPDF(PdfServiceImpl.java:33)
at com.company.myapp.controller.PdfController.generate(PdfController.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)