Howdy --
I'm unable to initialize the PDDocument class in PDFBox 2.0.17, as it
throws an ExceptionInInitializerError from inside ICC_Profile code on first
reference.
I'm using AdoptOpenJDK 11.0.4, but also (to my great surprise!) reproduced
the problem using OpenJDK 1.8.0_222-ga (albeit still using LCMS).
To reproduce the issue, one can pull the code out of
the org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB initializer and
run it externally, as done below:
(import '[java.awt.color ColorSpace])
(let [cs (ColorSpace/getInstance ColorSpace/CS_sRGB),
black (float-array [0 0 0 0])]
(.toRGB cs black))
...which yields:
#error {
:cause nil
:via
[{:type java.lang.NullPointerException
:message nil
:at [java.awt.color.ICC_Profile intFromBigEndian "ICC_Profile.java"
1782]}]
:trace
[[java.awt.color.ICC_Profile intFromBigEndian "ICC_Profile.java" 1782]
[java.awt.color.ICC_Profile getNumComponents "ICC_Profile.java" 1474]
[sun.java2d.cmm.lcms.LCMSTransform <init> "LCMSTransform.java" 98]
[sun.java2d.cmm.lcms.LCMS createTransform "LCMS.java" 173]
[java.awt.color.ICC_ColorSpace toRGB "ICC_ColorSpace.java" 178]
[user$eval2013 invokeStatic "NO_SOURCE_FILE" 1]
[user$eval2013 invoke "NO_SOURCE_FILE" 1]
...matching the relevant subset of the full stack trace, as seen below:
user=> org.apache.pdfbox.pdmodel.PDDocument
CompilerException java.lang.ExceptionInInitializerError,
compiling:(/tmp/form-init3209311122715787650.clj:1:1418)
user=> *e
#error {
:cause nil
:via
[{:type clojure.lang.Compiler$CompilerException
:message "java.lang.ExceptionInInitializerError,
compiling:(/tmp/form-init3209311122715787650.clj:1:1418)"
:at [clojure.lang.Compiler analyze "Compiler.java" 6792]}
{:type java.lang.ExceptionInInitializerError
:message nil
:at [java.lang.Class forName0 "Class.java" -2]}
{:type java.lang.NullPointerException
:message nil
:at [java.awt.color.ICC_Profile intFromBigEndian "ICC_Profile.java"
1782]}]
:trace
[[java.awt.color.ICC_Profile intFromBigEndian "ICC_Profile.java" 1782]
[java.awt.color.ICC_Profile getNumComponents "ICC_Profile.java" 1474]
[sun.java2d.cmm.lcms.LCMSTransform <init> "LCMSTransform.java" 98]
[sun.java2d.cmm.lcms.LCMS createTransform "LCMS.java" 173]
[java.awt.color.ICC_ColorSpace toRGB "ICC_ColorSpace.java" 178]
[org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB init
"PDDeviceRGB.java" 68]
[org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB toRGBImage
"PDDeviceRGB.java" 108]
[org.apache.pdfbox.pdmodel.PDDocument <clinit> "PDDocument.java" 107]
[java.lang.Class forName0 "Class.java" -2]
[java.lang.Class forName "Class.java" 348]
;; ...snipped below here; generic Clojure REPL trace.
Any pointers?