Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

-graphvizdot no longer works #53

Closed
myint opened this issue May 3, 2017 · 9 comments
Closed

-graphvizdot no longer works #53

myint opened this issue May 3, 2017 · 9 comments

Comments

@myint
Copy link

myint commented May 3, 2017

-graphvizdot no longer works in version 1.2017.12.

$ java -jar plantuml.jar -graphvizdot /opt/local/bin/dot example.puml
java.io.IOException: Cannot run program "/usr/bin/dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.startThreads(ProcessRunner.java:163)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.runJob(ProcessRunner.java:123)
	at net.sourceforge.plantuml.api.TimeoutExecutor$MyThread.run(TimeoutExecutor.java:79)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more
java.io.IOException: Cannot run program "/usr/bin/dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.startThreads(ProcessRunner.java:163)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.runJob(ProcessRunner.java:123)
	at net.sourceforge.plantuml.api.TimeoutExecutor$MyThread.run(TimeoutExecutor.java:79)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more

The environment variable GRAPHVIZ_DOT seems to work though.

$ GRAPHVIZ_DOT=/opt/local/bin/dot java -jar plantuml.jar example.puml
@arnaudroques
Copy link
Contributor

Thanks for the report. Unfortunately, we cannot reproduce this bug.
Could you try (with verbose flag) on latest beta (we've added some trace) ?
https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

java -jar plantuml.jar -verbose -graphvizdot /opt/local/bin/dot example.puml

And post here the log ?
Thanks!

@myint
Copy link
Author

myint commented May 3, 2017

This may be a heisenbug.

$ cat example.puml
@startuml

title test

[*] --> root

@enduml
$ java -jar plantuml.jar -graphvizdot /opt/local/bin/dot example.puml
Setting GraphViz to /opt/local/bin/dot
Setting GraphViz to null
java.io.IOException: Cannot run program "/usr/bin/dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.startThreads(ProcessRunner.java:163)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.runJob(ProcessRunner.java:123)
	at net.sourceforge.plantuml.api.TimeoutExecutor$MyThread.run(TimeoutExecutor.java:79)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more
java.io.IOException: Cannot run program "/usr/bin/dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.startThreads(ProcessRunner.java:163)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.runJob(ProcessRunner.java:123)
	at net.sourceforge.plantuml.api.TimeoutExecutor$MyThread.run(TimeoutExecutor.java:79)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more

With verbose, the problem disappears:

$ java -jar plantuml.jar -verbose -graphvizdot /opt/local/bin/dot example.puml
Setting GraphViz to null
Setting GraphViz to /opt/local/bin/dot
(0.000 - 245 Mo) 237 Mo - PlantUML Version 1.2017.13beta5
(0.002 - 245 Mo) 237 Mo - GraphicsEnvironment.isHeadless() false
(0.871 - 245 Mo) 236 Mo - Setting current dir: .
(0.871 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.872 - 245 Mo) 236 Mo - Using default charset
(0.876 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.880 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.881 - 245 Mo) 236 Mo - Reading file: example.puml
(1.115 - 245 Mo) 192 Mo - Creating file: /Users/myint/Downloads/example.png
(1.126 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.126 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.164 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.164 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.166 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.166 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.166 - 245 Mo) 186 Mo - Starting Graphviz process [/opt/local/bin/dot, -Tsvg]
(1.166 - 245 Mo) 186 Mo - DotString size: 312
(1.180 - 245 Mo) 184 Mo - Ending process ok
(1.180 - 245 Mo) 184 Mo - Ending Graphviz process
(1.212 - 245 Mo) 182 Mo - Creating image 67x169
(1.273 - 245 Mo) 181 Mo - Ok for com.sun.imageio.plugins.png.PNGMetadata
(1.319 - 245 Mo) 181 Mo - Number of image(s): 1
$ file example.png
example.png: PNG image data, 67 x 169, 8-bit/color RGB, non-interlaced

@myint
Copy link
Author

myint commented May 3, 2017

Oh, actually the problem reappears if I change the argument order:

$ java -jar plantuml.jar -graphvizdot /opt/local/bin/dot example.puml -verbose
Setting GraphViz to /opt/local/bin/dot
Setting GraphViz to null
(0.000 - 245 Mo) 237 Mo - PlantUML Version 1.2017.13beta5
(0.002 - 245 Mo) 237 Mo - GraphicsEnvironment.isHeadless() false
(0.856 - 245 Mo) 236 Mo - Setting current dir: .
(0.857 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.857 - 245 Mo) 236 Mo - Using default charset
(0.861 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.866 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.866 - 245 Mo) 236 Mo - Reading file: example.puml
(1.087 - 245 Mo) 192 Mo - Creating file: /Users/myint/Downloads/example.png
(1.100 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=null
(1.101 - 245 Mo) 191 Mo - GraphvizUtils::env=null
(1.101 - 245 Mo) 191 Mo - GraphvizUtils::getenv=null
(1.101 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=null
(1.101 - 245 Mo) 191 Mo - GraphvizUtils::env=null
(1.101 - 245 Mo) 191 Mo - GraphvizUtils::getenv=null
java.io.IOException: Cannot run program "/usr/bin/dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.startThreads(ProcessRunner.java:163)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.runJob(ProcessRunner.java:123)
	at net.sourceforge.plantuml.api.TimeoutExecutor$MyThread.run(TimeoutExecutor.java:79)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more
java.io.IOException: Cannot run program "/usr/bin/dot": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.startThreads(ProcessRunner.java:163)
	at net.sourceforge.plantuml.cucadiagram.dot.ProcessRunner$MainThread.runJob(ProcessRunner.java:123)
	at net.sourceforge.plantuml.api.TimeoutExecutor$MyThread.run(TimeoutExecutor.java:79)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more
(1.135 - 245 Mo) 189 Mo - GraphvizUtils::dotExecutable=null
(1.135 - 245 Mo) 189 Mo - GraphvizUtils::env=null
(1.135 - 245 Mo) 189 Mo - GraphvizUtils::getenv=null
(1.135 - 245 Mo) 189 Mo - GraphvizUtils::dotExecutable=null
(1.135 - 245 Mo) 189 Mo - GraphvizUtils::env=null
(1.135 - 245 Mo) 189 Mo - GraphvizUtils::getenv=null
(1.136 - 245 Mo) 189 Mo - GraphvizUtils::dotExecutable=null
(1.136 - 245 Mo) 189 Mo - GraphvizUtils::env=null
(1.136 - 245 Mo) 189 Mo - GraphvizUtils::getenv=null
(1.136 - 245 Mo) 189 Mo - GraphvizUtils::dotExecutable=null
(1.136 - 245 Mo) 189 Mo - GraphvizUtils::env=null
(1.136 - 245 Mo) 189 Mo - GraphvizUtils::getenv=null
(1.197 - 245 Mo) 226 Mo - Creating image 284x233
(1.230 - 245 Mo) 212 Mo - Ok for com.sun.imageio.plugins.png.PNGMetadata
(1.281 - 245 Mo) 211 Mo - Number of image(s): 1

@arnaudroques
Copy link
Contributor

This is really weird.
Could you try with beta 6 ?
https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0
We are interested with logs when it does NOT work.
Thanks!

@arnaudroques
Copy link
Contributor

I think we've solved it.
You can try beta 7 here https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0
It was related to class loading order, which was depending on option order in command line!
Tell us if it's working for you now!
Thanks!

@myint
Copy link
Author

myint commented May 4, 2017

Thanks, that fixed it!

$ java -jar plantuml.jar -verbose -graphvizdot /opt/local/bin/dot example.puml
Setting GraphViz to /opt/local/bin/dot
(0.000 - 245 Mo) 237 Mo - PlantUML Version 1.2017.13beta7
(0.001 - 245 Mo) 237 Mo - GraphicsEnvironment.isHeadless() false
(0.842 - 245 Mo) 236 Mo - Setting current dir: .
(0.842 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.843 - 245 Mo) 236 Mo - Using default charset
(0.847 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.852 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.852 - 245 Mo) 236 Mo - Reading file: example.puml
(1.081 - 245 Mo) 192 Mo - Creating file: /Users/myint/Downloads/example.png
(1.094 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.094 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.132 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.132 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.136 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.136 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.137 - 245 Mo) 186 Mo - Starting Graphviz process [/opt/local/bin/dot, -Tsvg]
(1.137 - 245 Mo) 186 Mo - DotString size: 312
(1.150 - 245 Mo) 184 Mo - Ending process ok
(1.150 - 245 Mo) 184 Mo - Ending Graphviz process
(1.182 - 245 Mo) 182 Mo - Creating image 67x169
(1.250 - 245 Mo) 181 Mo - Ok for com.sun.imageio.plugins.png.PNGMetadata
(1.290 - 245 Mo) 181 Mo - Number of image(s): 1
$ java -jar plantuml.jar -graphvizdot /opt/local/bin/dot example.puml -verbose
Setting GraphViz to /opt/local/bin/dot
(0.000 - 245 Mo) 237 Mo - PlantUML Version 1.2017.13beta7
(0.002 - 245 Mo) 237 Mo - GraphicsEnvironment.isHeadless() false
(0.792 - 245 Mo) 236 Mo - Setting current dir: .
(0.792 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.793 - 245 Mo) 236 Mo - Using default charset
(0.797 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.802 - 245 Mo) 236 Mo - Setting current dir: /Users/myint/Downloads
(0.802 - 245 Mo) 236 Mo - Reading file: example.puml
(1.033 - 245 Mo) 192 Mo - Creating file: /Users/myint/Downloads/example.png
(1.046 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.047 - 245 Mo) 191 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.088 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.089 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.091 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.091 - 245 Mo) 186 Mo - GraphvizUtils::dotExecutable=/opt/local/bin/dot
(1.091 - 245 Mo) 186 Mo - Starting Graphviz process [/opt/local/bin/dot, -Tsvg]
(1.091 - 245 Mo) 186 Mo - DotString size: 312
(1.103 - 245 Mo) 184 Mo - Ending process ok
(1.103 - 245 Mo) 184 Mo - Ending Graphviz process
(1.138 - 245 Mo) 182 Mo - Creating image 67x169
(1.196 - 245 Mo) 181 Mo - Ok for com.sun.imageio.plugins.png.PNGMetadata
(1.239 - 245 Mo) 181 Mo - Number of image(s): 1

@myint myint closed this as completed May 4, 2017
@arnaudroques
Copy link
Contributor

Thanks for the remote debug!
We've remove the log in the last beta
https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0
This will be published in next official release.
Regards,

@pjscopeland
Copy link

I have just encountered this same issue three years later on a new Mac, but my problem was fixed my running brew install graphviz.

@mirajgodha
Copy link

On Mac 10.15.7, brew install graphviz solved this issue for me. Thanks @pjscopeland

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants