Open
Description
graphviz-java
offers several implementations of Graphviz. The problem is that those implementations are quite "fragile", i.e. if the first one defined is determined to be "available" by graphviz-java
, it will be used even if it causes errors down the line on a specific machine.
An example here is an old CLI version of Graphviz unable to create a specific format, or a Nashhorn version unable to initialize due to JVM bugs/peculiarities, eventually throwing an NPE or similar.
- A stopgap is to add a config entry that is parsed into the preferred engine sequence.
- A long-term solution would be to wrap invocations on different engines into an execution-deferral abstraction (such as
Try
) and provide proper fallback support.