Fixing PlantUML in org-babel
I was receiving this error:
Exception in thread "main" java.awt.AWT Error: Can't connect to X11 window server using ':1' as the value of the DISPLAY variable.
Seems to be because it isn't running headless. Which, from plantuml-java-args
, it looks like it should be. However, when running via babel, it appears those args aren't used?
I made a fix by editing \~/.emacs.d/elpa/26.3/develop/org-plus-contrib-20201116/ob-plantuml.el
and adding in "-Djava.awt.headless=true" to the args passed to the jar.
Changing:
(t (list java
"-jar"
(shell-quote-argument (expand-file-name org-plantuml-jar-path))))))
to
(t (list java
"-jar -Djava.awt.headless=true"
(shell-quote-argument (expand-file-name org-plantuml-jar-path))))))
But this is temporary - it will be overwritten when org-plus-contrib package is updated.
And how come it was working a couple of weeks ago - what changed?
Shared by Liban via email:
I was digging around trying to find out how to get PlantUML to work in org-babel in headless mode and came across your blog post. It prompted me to have a look at the source and found that you can add java arguments in the plantuml babel header[1], so something like:
#+beginsrc plantuml :file diagram.svg :java -Djava.awt.headless=true
worked for me. Theres also a org-babel-default-header-args:plantuml variable to set things as default but I haven't tried that yet (only the one diagram for me so far).
- public document at doc.anagora.org/fixing-plantuml-in-org-babel
- video call at meet.jit.si/fixing-plantuml-in-org-babel