У меня возникли проблемы с настройкой ditaa для работы в emacs, Я получил копию ditaa jar из здесь И я пытался запустить этот блок кода
#+begin_src ditaa :file hello.png :exports results
+----------------+
| Hello World!!! |
| |
+----------------+
#+end_src
Когда я оцениваю его с помощью C-c C-c, я получаю Пустой буфер png и это:
Error: Unable to access jarfile /home/nalis/emacs-custom-packages/ditaa/ditaa.jar
in a buffer called Shell Command Output
Я попытался переместить файлы jar на более короткие имена, поместив их местоположение в мой системный путь и запустив ditaa вне emacs для моего успеха.
Мои текущие настройки для моей организационной группы:
Org Ditaa Jar Path: ~/emacs-custom-packages/ditaa/ditaa.jar
Org Babel Ditaa Java Cmd: java
Org Ditaa Jar Option: -jar
И я бегу: GNU Emacs 24.5.1 (x86_64-unknown-cygwin, GTK + Version 3.14.13) от 2015-06-23 на рабочем столе
Попробуйте
Find full directory path where emacs expects ditaa.jar to be located.
This code is copied from ob-ditaa.el
#+begin_src elisp
(expand-file-name
"ditaa.jar"
(file-name-as-directory
(expand-file-name
"scripts"
(file-name-as-directory
(expand-file-name
"../contrib"
(file-name-directory (org-find-library-dir "org")))))))
#+end_src
Note: This path in your setup may be different, so you should run the code above to check then adjust the instructions to meet your specific path.
#+RESULTS:
: /usr/share/emacs/24.5/lisp/contrib/scripts/ditaa.jar
Copy ditaa.jar
and DitaaEps.jar
into expected directory, e.g. /usr/share/emacs/24.5/lisp/contrib/scripts
Windows specific step - Confirm that ditaa.jar
and DitaaEps.jar
are unblocked otherwise Windows OS will block execution.
Cygwin specific step - Create call-ditaa.sh
wrapper script.
Note: The Oracle JSE for Windows expects Windows paths not Cygwin paths, so we needed to convert using
cygpath
command.
#+begin_src sh :tangle yes :shebang #!/usr/bin/env bash
#
# Convert to windows file paths.
#
java $1 $2 "$(cygpath -w $3)" "$(cygpath -w $4)" "$(cygpath -w $5)"
#+end_src
Cygwin specific Step - Customize org-mode to use wrapper script instead calling java directly.
Note: I suggest putting
call-ditaa.sh
script in same directory asditaa.jar
.
Org Babel Ditaa Java Cmd: /usr/share/emacs/24.5/lisp/contrib/scripts/call-ditaa.sh
Customize org-mode to Org Ditaa Jar Path
to expected path, e.g. /usr/share/emacs/24.5/lisp/contrib/scripts/ditaa.jar
Apply & Save customization
Test Updated ditaa
Settings
#+begin_src ditaa :file ./helloworld.png
+----------------+
| Hello World!!! |
| |
+----------------+
#+end_src
#+RESULTS:
[[file:./helloworld.png]]
Основываясь на ответах Melioratus, я сделал это:
cd .emacs.d/elpa && mkdir contrib
cd contrib %% mkdir scripts
cd scripts
which ditaa ## I have mine in /usr/local/bin
ln -s /usr/local/bin/ditaa0_9.jar ditaa.jar
ln -s /usr/local/bin/DitaaEps.jar DitaaEps.jar
Теперь emacs/org-babel может найти ditaa, успех!
Я попытался переместить файлы jar в ... мой системный путь
попробуйте использовать путь lib или запустите эту команду в командной строке терминала, чтобы узнать, работает ли ditaa в вашей системе без ошибок:
java -jar ditaaXXX.jar
отрегулируйте путь к файлу jar, где xxx - номер версии. Если он установлен правильно, вы получите экран справки для параметров командной строки.