Org-modeでDitaaを設定する

私はemacsで働くためにditaaを設定することに問題がありました。 ここから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ファイルを短い名前に移動し、システムパスにその場所を置き、emacsの外でditaaを実行してみました。

私の組織グループの現在の設定は次のとおりです:

Org Ditaa Jar Path: ~/emacs-custom-packages/ditaa/ditaa.jar
Org Babel Ditaa Java Cmd: java
Org Ditaa Jar Option: -jar

私は走っています: 2015-06-23のGNU Emacs 24.5.1(x86_64-unknown-cygwin、GTK + Version 3.14.13)のdesktop-new

6
これはWindows上にあるので、インターネットからダウンロードしたファイルを「信頼する」という問題があったことを覚えていると思います。それはおそらくそれのようなものでしょうか?私は、ファイルのプロパティ(エクスプローラのコンテキストメニューからアクセスできるはずのもの)の最初のタブで、インターネットからファイルをダウンロードして、チェック/チェックを外す必要があるチェックボックスを持っていると言います。また、このJavaはCigwin経由でインストールされていますか、これはWindows Javaですか?それが後であれば、代わりにWindows-yパスを使用してみましたか?
追加された 著者 Yann Trevin,
クール、私は助けることができてうれしい。
追加された 著者 Yann Trevin,
私は@melioratusにそれを見てもらいました。そして、彼は許可行為の問題であることについて、これらの行に沿って何かを言いました。私のJavaのインストールに関しては、ウィンドウで行われ、windows-yパスはすべて同じ問題を網羅しています。しかし、私はjarファイル自体を見ていきます。
追加された 著者 user11045,
@wvxvwあなたはそうです!私はプロパティでそれらのブロックを解除しなければならなかった、今私はcmdとmintyのjarファイルの上にいるので、私はそれらを呼び出すことができます、それは問題の一部です!
追加された 著者 user11045,

3 答え

お試しください

  1. 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
    
  2. Copy ditaa.jar and DitaaEps.jar into expected directory, e.g. /usr/share/emacs/24.5/lisp/contrib/scripts

  3. Windows specific step - Confirm that ditaa.jar and DitaaEps.jar are unblocked otherwise Windows OS will block execution.

  4. 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
    
  5. 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 as ditaa.jar.

    Org Babel Ditaa Java Cmd: /usr/share/emacs/24.5/lisp/contrib/scripts/call-ditaa.sh
    
  6. Customize org-mode to Org Ditaa Jar Path to expected path, e.g. /usr/share/emacs/24.5/lisp/contrib/scripts/ditaa.jar

  7. Apply & Save customization

  8. Test Updated ditaa Settings

    #+begin_src ditaa :file ./helloworld.png
    +----------------+
    | Hello World!!! |
    |                |
    +----------------+
    #+end_src
    
    #+RESULTS:
    [[file:./helloworld.png]]
    
2
追加された

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、successを見つけることができます!

1
追加された

jarファイルをシステムパスに移動しようとしました。

代わりにlibパスを試してみるか、ターミナル・プロンプトでこのコマンドを実行して、ditaaがシステム上でエラーなしで実行されているかどうかを確認してください。

java -jar ditaaXXX.jar

jarファイルへのパスを調整します。ここで、xxxはバージョン番号です。正しくインストールされていれば、コマンドラインオプションのヘルプ画面が表示されます。

0
追加された
libパスを修正して、/ dir /
追加された 著者 Emacs User,
さて、ditaa.jarを私の/ lib /ディレクトリに移動し、ditaa0_9.jarという名前をbashで呼び出すと同じエラーが表示されますが、cdを使用してlibに移動すると動作します。
追加された 著者 user11045,