And here is a link to the original post by Chris

 
https://lists.apache.org/[email protected]:dfr=2017-6-1|dto=2017-8-1:tomcat
<https://lists.apache.org/[email protected]:dfr=2017-6-1|dto=2017-8-1:tomcat>

On Wed, Aug 1, 2018 at 8:42 AM, Joel Hirsh <[email protected]> wrote:

> I was having a problem a month ago with reading JPEG2000 files on tomcat,
> that seemed identical to what is described in a posting to this list by
> Chris Gamache <https://plus.google.com/u/0/101607728077454498498?prsrc=4>
>  <[email protected]> on Jun 21 2017 with the subject "PDFBox JPEG2000
> and Tomcat".  Basically PDFBox was 'forgetting' about the JPEG2000 library
> at some point, and getting an error when reading a JPEG2000 file.
>
> I reached out to Chris and he was kind enough to offer me his solution,
> which is to check for whether JPEG2000 is loaded before each call to
> PDFBox, and then reload it.  And that seemed to resolve my problem.
>
> I recently upgraded to PDFBox 2.0.11, and removed the library
> levigo-jbig2-imageio-1.6.5.jar as those entry points were now being defined
> in pdfbox-app-2.0.11.jar.
>
> And what appears to be the same error is back.  Running one JPEG2000 image
> is fine, but at some point I get the error
>
> java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.pdfbox.jbig2.JBIG2ImageReader
>   at org.apache.pdfbox.jbig2.JBIG2ImageReaderSpi.createReaderInstance(
> JBIG2ImageReaderSpi.java:117)
>   at javax.imageio.spi.ImageReaderSpi.createReaderInstance(
> ImageReaderSpi.java:320)
>   at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:529)
>   at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:513)
>   at org.apache.pdfbox.filter.Filter.findImageReader(Filter.java:155)
>   at org.apache.pdfbox.filter.JBIG2Filter.decode(JBIG2Filter.java:67)
>   at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:77)
>   at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:175)
>   at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:163)
>   at org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.
> java:236)
>   at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.
> createInputStream(PDImageXObject.java:695)
>   at org.apache.pdfbox.pdmodel.graphics.image.SampledImageReader.
> getStencilImage(SampledImageReader.java:91)
>   at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.
> getStencilImage(PDImageXObject.java:483)
>   at org.apache.pdfbox.rendering.PageDrawer.drawImage(
> PageDrawer.java:1029)
>   at org.apache.pdfbox.contentstream.operator.graphics.DrawObject.process(
> DrawObject.java:62)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(
> PDFStreamEngine.java:848)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.
> processStreamOperators(PDFStreamEngine.java:503)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.
> processStream(PDFStreamEngine.java:477)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.
> processPage(PDFStreamEngine.java:150)
>   at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:246)
>   at org.apache.pdfbox.rendering.PDFRenderer.renderImage(
> PDFRenderer.java:225)
>   at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(
> PDFRenderer.java:150)
>
> Which is very similar to the error I got with PDFBox 2.0.7 and the levigo
> jar
>
> java.lang.NoClassDefFoundError: Could not initialize class
> com.levigo.jbig2.JBIG2ImageReader
>   at com.levigo.jbig2.JBIG2ImageReaderSpi.createReaderInstance(
> JBIG2ImageReaderSpi.java:118)
>   at javax.imageio.spi.ImageReaderSpi.createReaderInstance(
> ImageReaderSpi.java:320)
>   at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:529)
>   at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:513)
>   at org.apache.pdfbox.filter.Filter.findImageReader(Filter.java:120)
>   at org.apache.pdfbox.filter.JBIG2Filter.decode(JBIG2Filter.java:54)
>   at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:69)
>   at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:167)
>   at org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.
> java:235)
>   at org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.
> <init>(PDImageXObject.java:125)
>   at org.apache.pdfbox.pdmodel.graphics.PDXObject.
> createXObject(PDXObject.java:70)
>   at org.apache.pdfbox.pdmodel.PDResources.getXObject(
> PDResources.java:409)
>   at com.moneythumb.convert.i.processOperator(SourceFile:72)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.
> processStreamOperators(PDFStreamEngine.java:495)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.
> processStream(PDFStreamEngine.java:469)
>   at org.apache.pdfbox.contentstream.PDFStreamEngine.
> processPage(PDFStreamEngine.java:150)
>
> Also the workaround from Chris was still in place, but did not appear to
> help, although it is not specific to any packaging.  It checks whether the
> reader for format 'JPEG2000' canReadRaster() and if not calls
> IIORegistry.getDefaultInstance.registerApplicationClasspathSpis();.
>
> So my take is that PDFBox inherited whatever problem was there previously
> in the  JBIG2 ImageIO plugin.
>
> And I am surprised that the workaround did not help - I assume the format
> is still known at 'JPEG2000', right?
>
>
>

Reply via email to