Ditaa instellen in Org-modus

Ik heb problemen gehad met het opzetten van ditaa om in emacs te werken, Ik heb mijn kopie van de ditaa-pot gekregen van hier En ik heb geprobeerd om dit codeblok te gebruiken

#+begin_src ditaa :file hello.png :exports results 
  +----------------+
  | Hello World!!! |
  |                |
  +----------------+

#+end_src

Wanneer ik het evalueer met C-c C-c krijg ik Een lege png-buffer en dit:

 Error: Unable to access jarfile /home/nalis/emacs-custom-packages/ditaa/ditaa.jar

in a buffer called Shell Command Output

Ik heb geprobeerd de jar-bestanden naar kortere namen te verplaatsen, hun locatie in mijn systeempad te plaatsen en ditaa buiten emacs uit te voeren naar mijn succes.

Mijn huidige configuraties voor mijn orggroep zijn:

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

En ik ben aan het rennen: GNU Emacs 24.5.1 (x86_64-unknown-cygwin, GTK + Version 3.14.13) van 2015-06-23 op desktop-nieuw

6
Omdat dit op Windows staat, denk ik dat ik me herinner dat er een probleem was met "vertrouwende" bestanden die van internet waren gedownload. Zou het zoiets kunnen zijn? Ik denk dat in de bestandseigenschappen (iets dat toegankelijk zou moeten zijn vanuit het contextmenu in verkenner) op het eerste tabblad iets zou zeggen over het downloaden van bestanden van internet en een selectievakje moet aanvinken/verwijderen. Is deze Java ook geïnstalleerd via Cigwin of is dit een Windows Java? Als het later is, probeerde je het dan het Windows-y-pad te geven?
toegevoegd de auteur Yann Trevin, de bron
Cool, blij dat ik kon helpen.
toegevoegd de auteur Yann Trevin, de bron
Ik heb @melioratus een kijkje laten nemen, en hij zei iets in die zin dat het een toestemmingsprobleem is. Wat betreft mijn Java-installatie is dit gedaan in Windows en de Windows-y-paden hebben allemaal hetzelfde probleem. Maar ik zal de jar-bestanden zelf bekijken.
toegevoegd de auteur user11045, de bron
@wvxvw Je hebt gelijk! Ik moest ze deblokkeren in eigenschappen, nu kan ik ze bellen zolang ik boven de jar-bestanden in cmd en muntachtig ben, dus dat is een deel van het probleem, bedankt!
toegevoegd de auteur user11045, de bron

3 antwoord

Probeer dit

  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
toegevoegd

Base on Melioratus antwoord Ik deed dit:

 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

Nu kan emacs/org-babel ditaa vinden, succes!

1
toegevoegd

Ik heb geprobeerd de jar-bestanden te verplaatsen naar ... mijn systeempad

probeer in plaats daarvan lib-pad of voer deze opdracht uit bij een terminalprompt om te zien of ditaa zonder fouten op uw systeem wordt uitgevoerd:

java -jar ditaaXXX.jar

pas het pad naar het jar-bestand aan, waarbij xxx het versienummer is. Als het goed is geïnstalleerd, krijgt u het helpscherm voor opdrachtregelopties.

0
toegevoegd
probeer het lib-pad te repareren om dat/dir/goed te herkennen
toegevoegd de auteur Emacs User, de bron
Oké, ik heb ditaa.jar verplaatst naar mijn/lib/directory, en hernoemde het ditaa0_9.jar als ik het in bash noem, ik krijg dezelfde foutmelding, maar als ik cd gebruik om naar lib te gaan, dan werkt het.
toegevoegd de auteur user11045, de bron