0

I build OpenJDK 9 by myself and run Dacapo Benchmarks on my Linux Server(64-bit, 64 cores, 126GB Memory)(Ubuntu 17.10).

I have InvocationTargetException/NoClassDefFoundError/ClassNotFoundException when I run batik(DaCapo-9.12-bach benchmark) and some other benchmarks.

Question: How to solve it and why I get these exceptions?

batik

produces a number of Scalable Vector Graphics (SVG) images based on the unit tests in Apache Batik

wxf@wxf:/home/wxf/javaPrj/dacapo_benchmark$ /home/wxf/9dev/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -jar dacapo-9.12-MR1-bach.jar batik
===== DaCapo 9.12-MR1 batik starting =====
About to transcode 3 SVG file(s)

Converting mapWaadt.svg to /home/wxf/javaPrj/dacapo_benchmark/./scratch/mapWaadt.png ... ... success
Converting mapSpain.svg to /home/wxf/javaPrj/dacapo_benchmark/./scratch/mapSpain.png ... ... success
Converting sydney.svg to /home/wxf/javaPrj/dacapo_benchmark/./scratch/sydney.png ... java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.dacapo.harness.Batik.iterate(Batik.java:41)
    at org.dacapo.harness.Benchmark.run(Benchmark.java:187)
    at org.dacapo.harness.TestHarness.runBenchmark(TestHarness.java:199)
    at org.dacapo.harness.TestHarness.main(TestHarness.java:152)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at Harness.main(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/TruncatedFileException
    at org.apache.batik.ext.awt.image.codec.jpeg.JPEGRegistryEntry.handleStream(JPEGRegistryEntry.java:87)
    at org.apache.batik.ext.awt.image.spi.ImageTagRegistry.readURL(ImageTagRegistry.java:189)
    at org.apache.batik.bridge.SVGImageElementBridge.createImageGraphicsNode(SVGImageElementBridge.java:257)
    at org.apache.batik.bridge.SVGImageElementBridge.buildImageGraphicsNode(SVGImageElementBridge.java:176)
    at org.apache.batik.bridge.SVGImageElementBridge.createGraphicsNode(SVGImageElementBridge.java:118)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:206)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:164)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:212)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:164)
    at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:78)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:214)
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:159)
    at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:992)
    at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:715)
    at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
    ... 13 more
Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.TruncatedFileException
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
    at org.dacapo.harness.DacapoClassLoader.loadClass(DacapoClassLoader.java:123)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 30 more

However, if I use JDK8 from Oracle, the batik can work.

java version "1.8.0_144"

Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Result:

wxf@wxf:/home/wxf/javaPrj/dacapo_benchmark$ java -jar dacapo-9.12-MR1-bach.jar batik
===== DaCapo 9.12-MR1 batik starting =====
About to transcode 3 SVG file(s)

Converting mapWaadt.svg to /home/wxf/javaPrj/dacapo_benchmark/./scratch/mapWaadt.png ... ... success
Converting mapSpain.svg to /home/wxf/javaPrj/dacapo_benchmark/./scratch/mapSpain.png ... ... success
Converting sydney.svg to /home/wxf/javaPrj/dacapo_benchmark/./scratch/sydney.png ... ... success
===== DaCapo 9.12-MR1 batik PASSED in 3687 msec =====
skytree
  • 1,060
  • 2
  • 13
  • 38
  • what is the question? – jrmullen Jan 25 '18 at 15:13
  • Did you searched for answer? https://stackoverflow.com/questions/1906673/import-com-sun-image-codec-jpeg – JIV Jan 25 '18 at 15:15
  • @J Mullen QQQ: How to solve it and why I get these exceptions? – skytree Jan 25 '18 at 15:16
  • @JIV This is a benchmark. I cannot add code into it. It is a jar file. – skytree Jan 25 '18 at 15:17
  • Apache Batik uses non-standard classes from `com/sun/image/codec/jpeg` package which is not available in OpenJDK. Here is a [blog post](http://www.stichlberger.com/software/workaround-for-batiks-noclassdeffounderrorclassnotfoundexception-truncatedfileexception/) with suggested solutions. – apangin Jan 25 '18 at 17:50

0 Answers0