nidi3 / graphviz-java

Use graphviz with pure java
Apache License 2.0
937 stars 107 forks source link

Error when creating graph images from a Windows Command Line #181

Open vedran-kasalica opened 4 years ago

vedran-kasalica commented 4 years ago

My issue looks similar to https://github.com/nidi3/graphviz-java/issues/41 It is triggered when called toFile(_) or toImage() method, used as follows:

Graphviz.fromGraph(graph).render(Format.PNG).**toFile**(file); or Graphviz.fromGraph(graph).render(Format.PNG).**toImage**();

I am generating graph files while iterating through a stream of objects. The error behaves non-deterministically and is prominent when the stream is processed in parallel. When done sequentially the error is usually shown once, and then, after a while, the execution continues. I didn't notice the error in the earlier versions (such as v0.11). An interesting fact is that the error only occurs when running the program from the Command Line on Windows machines. I didn't encounter the error when using a Linux machine.

The error is as follows:

[ForkJoinPool.commonPool-worker-2] INFO guru.nidi.graphviz.engine.AbstractGraphvizEngine - Could not initialize guru.nidi.graphviz.engine.GraphvizCmdLineEngine
guru.nidi.graphviz.engine.GraphvizException: [dot.exe, dot.bat, dot.cmd] command not found
[ForkJoinPool.commonPool-worker-2] INFO guru.nidi.graphviz.engine.V8JavascriptEngine - Starting V8 runtime...
[ForkJoinPool.commonPool-worker-2] INFO guru.nidi.graphviz.engine.AbstractGraphvizEngine - Could not initialize guru.nidi.graphviz.engine.GraphvizV8Engine
java.lang.IllegalStateException: J2V8 native library not loaded
        at com.eclipsesource.v8.V8.checkNativeLibraryLoaded(V8.java:195)
        at com.eclipsesource.v8.V8.createV8Runtime(V8.java:149)
        at guru.nidi.graphviz.engine.V8JavascriptEngine.<init>(V8JavascriptEngine.java:36)
        at guru.nidi.graphviz.engine.GraphvizV8Engine.lambda$new$0(GraphvizV8Engine.java:31)
        at guru.nidi.graphviz.engine.AbstractJsGraphvizEngine.engine(AbstractJsGraphvizEngine.java:64)
        at guru.nidi.graphviz.engine.AbstractJsGraphvizEngine.doInit(AbstractJsGraphvizEngine.java:48)
        at guru.nidi.graphviz.engine.AbstractGraphvizEngine.initTask(AbstractGraphvizEngine.java:50)
        at guru.nidi.graphviz.engine.AbstractGraphvizEngine.init(AbstractGraphvizEngine.java:42)
        at guru.nidi.graphviz.engine.Graphviz.doUseEngine(Graphviz.java:146)
        at guru.nidi.graphviz.engine.Graphviz.lambda$doUseEngine$1(Graphviz.java:146)
        at guru.nidi.graphviz.engine.AbstractGraphvizEngine.initTask(AbstractGraphvizEngine.java:55)
        at guru.nidi.graphviz.engine.AbstractGraphvizEngine.init(AbstractGraphvizEngine.java:42)
        at guru.nidi.graphviz.engine.Graphviz.doUseEngine(Graphviz.java:146)
        at guru.nidi.graphviz.engine.Graphviz.useEngine(Graphviz.java:138)
        at guru.nidi.graphviz.engine.Graphviz.useDefaultEngines(Graphviz.java:112)
        at guru.nidi.graphviz.engine.Graphviz.getEngine(Graphviz.java:152)
        at guru.nidi.graphviz.engine.Graphviz.doExecute(Graphviz.java:312)
        at guru.nidi.graphviz.engine.Graphviz.execute(Graphviz.java:292)
        at guru.nidi.graphviz.engine.Renderer.execute(Renderer.java:139)
        at guru.nidi.graphviz.engine.Renderer.toFile(Renderer.java:59)
        at nl.uu.cs.ape.sat.core.solutionStructure.SolutionGraph.getWrite2File(SolutionGraph.java:64)
        at nl.uu.cs.ape.sat.APE.lambda$writeDataFlowGraphs$5(APE.java:374)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
        at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.ForEachOps$ForEachTask.compute(Unknown Source)
        at java.util.concurrent.CountedCompleter.exec(Unknown Source)
        at java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source)
        at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: Could not load J2V8 library. Reasons:
        no j2v8_win32_x86_64 in java.library.path

        at com.eclipsesource.v8.LibraryLoader.loadLibrary(LibraryLoader.java:75)
        at com.eclipsesource.v8.V8.load(V8.java:71)
        at com.eclipsesource.v8.V8.createV8Runtime(V8.java:145)
        ... 30 more