Trying to load com.rsa.cryptoj.j.hE
from inside an uberjar (combined jars of all dependencies):
java.lang.ExceptionInInitializerError, compiling:(NO_SOURCE_PATH:0:0)
at clojure.lang.Compiler.analyze(Compiler.java:6464)
at clojure.lang.Compiler.analyze(Compiler.java:6406)
at clojure.lang.Compiler.eval(Compiler.java:6707)
at clojure.lang.Compiler.eval(Compiler.java:6666)
at clojure.core$eval.invoke(core.clj:2927)
at clojure.main$repl$read_eval_print__6625$fn__6628.invoke(main.clj:239)
at clojure.main$repl$read_eval_print__6625.invoke(main.clj:239)
at clojure.main$repl$fn__6634.invoke(main.clj:257)
at clojure.main$repl.doInvoke(main.clj:257)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.main$repl_opt.invoke(main.clj:323)
at clojure.main$main.doInvoke(main.clj:421)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.Var.invoke(Var.java:375)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.ExceptionInInitializerError
at com.rsa.cryptoj.j.Ka.<init>(Unknown Source)
at com.rsa.cryptoj.j.Ka.<init>(Unknown Source)
at com.rsa.cryptoj.j.q.<init>(Unknown Source)
at com.rsa.cryptoj.j.q.<init>(Unknown Source)
at com.rsa.cryptoj.j.HV.a(Unknown Source)
at com.rsa.cryptoj.j.bT.a(Unknown Source)
at com.rsa.cryptoj.j.hl.<init>(Unknown Source)
at com.rsa.cryptoj.j.hz.a(Unknown Source)
at com.rsa.cryptoj.j.CJ.<init>(Unknown Source)
at com.rsa.cryptoj.j.CJ.<init>(Unknown Source)
at com.rsa.cryptoj.j.CJ.<clinit>(Unknown Source)
at com.rsa.cryptoj.j.GX.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at clojure.lang.RT.classForName(RT.java:2065)
at clojure.lang.Compiler.resolveIn(Compiler.java:6921)
at clojure.lang.Compiler.resolve(Compiler.java:6884)
at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6845)
at clojure.lang.Compiler.analyze(Compiler.java:6427)
... 16 more
Caused by: java.lang.NullPointerException
at com.rsa.cryptoj.j.FN.<init>(Unknown Source)
at com.rsa.cryptoj.j.xG.<init>(Unknown Source)
at com.rsa.cryptoj.j.cg.<init>(Unknown Source)
at com.rsa.cryptoj.j.xG.<clinit>(Unknown Source)
... 35 more
And the answer is: RSA's terrible com.rsa.jsafe/jsafejce
jar file has a signature and when you try to initialize it, it checks the signature on its own jar. (An ineffectual delaying tactic against intentional corruption.) Of course, the uberjar has all the signatures stripped out, and so JSAFE throws an NPE and dies horribly. The solution is to keep it as a separate dependency on the classpath -- or use something better that the NSA probably hasn't bribed RSA to backdoor.