asciidoctor / asciidoctor-diagram

:left_right_arrow: Asciidoctor diagram extension, with support for AsciiToSVG, BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag), Ditaa, Erd, GraphViz, Mermaid, Msc, PlantUML, Shaape, SvgBob, Syntrax, UMLet, Vega, Vega-Lite and WaveDrom.
http://asciidoctor.org
MIT License
440 stars 105 forks source link

Cannot find java when installed via bundle #351

Closed marmalodak closed 1 year ago

marmalodak commented 3 years ago

This is on MacOS Big Sur.

❯ bundle
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Following files may not be writable, so sudo is needed:
  /Library/Ruby/Gems/2.6.0
  /Library/Ruby/Gems/2.6.0/build_info
  /Library/Ruby/Gems/2.6.0/cache
  /Library/Ruby/Gems/2.6.0/doc
  /Library/Ruby/Gems/2.6.0/extensions
  /Library/Ruby/Gems/2.6.0/gems
  /Library/Ruby/Gems/2.6.0/specifications
  /usr/local/bin
Fetching asciidoctor 2.0.15

Your user account isn't allowed to install to the system RubyGems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/, or you can enter your password
  and install the bundled gems to RubyGems using sudo.

  Password:

Your user account isn't allowed to install to the system RubyGems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/, or you can enter your password
  and install the bundled gems to RubyGems using sudo.

  Password:
Installing asciidoctor 2.0.15
Fetching asciidoctor-diagram-ditaamini 1.0.0
Installing asciidoctor-diagram-ditaamini 1.0.0
Fetching asciidoctor-diagram-plantuml 1.2021.2
Installing asciidoctor-diagram-plantuml 1.2021.2
Fetching rexml 3.2.5
Installing rexml 3.2.5
Fetching asciidoctor-diagram 2.1.2
Installing asciidoctor-diagram 2.1.2
Using bundler 1.17.2
Bundle complete! 1 Gemfile dependency, 6 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
❯ asciidoctor --trace -b html5 -r asciidoctor-diagram index.adoc
asciidoctor: ERROR: bna.puml: line 0: Failed to generate image: java_home failed: The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

Traceback (most recent call last):
        24: from /opt/brew/Cellar/asciidoctor/2.0.13/libexec/bin/asciidoctor:23:in `<main>'
        23: from /opt/brew/Cellar/asciidoctor/2.0.13/libexec/bin/asciidoctor:23:in `load'
        22: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/bin/asciidoctor:15:in `<top (required)>'
        21: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/cli/invoker.rb:113:in `invoke!'
        20: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/cli/invoker.rb:113:in `each'
        19: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/cli/invoker.rb:130:in `block in invoke!'
        18: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:189:in `convert_file'
        17: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:189:in `open'
        16: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:189:in `block in convert_file'
        15: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:77:in `convert'
        14: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/load.rb:83:in `load'
        13: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/document.rb:538:in `parse'
        12: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:97:in `parse'
        11: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:385:in `next_section'
        10: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:895:in `next_block'
         9: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:1047:in `build_block'
         8: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:1047:in `[]'
         7: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/diagram_processor.rb:86:in `process'
         6: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/diagram_processor.rb:170:in `create_image_block'
         5: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/plantuml/converter.rb:42:in `convert'
         4: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java_socket.rb:44:in `load'
         3: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java_socket.rb:50:in `instance'
         2: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java.rb:95:in `java'
         1: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java.rb:106:in `find_java'
/Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/cli.rb:95:in `run': java_home failed: The operation couldn’t be completed. Unable to locate a Java Runtime. (RuntimeError)
Please visit http://www.java.com for information on installing Java.

        25: from /opt/brew/Cellar/asciidoctor/2.0.13/libexec/bin/asciidoctor:23:in `<main>'
        24: from /opt/brew/Cellar/asciidoctor/2.0.13/libexec/bin/asciidoctor:23:in `load'
        23: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/bin/asciidoctor:15:in `<top (required)>'
        22: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/cli/invoker.rb:113:in `invoke!'
        21: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/cli/invoker.rb:113:in `each'
        20: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/cli/invoker.rb:130:in `block in invoke!'
        19: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:189:in `convert_file'
        18: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:189:in `open'
        17: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:189:in `block in convert_file'
        16: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/convert.rb:77:in `convert'
        15: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/load.rb:83:in `load'
        14: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/document.rb:538:in `parse'
        13: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:97:in `parse'
        12: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:385:in `next_section'
        11: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:895:in `next_block'
        10: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:1047:in `build_block'
         9: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-2.0.15/lib/asciidoctor/parser.rb:1047:in `[]'
         8: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/diagram_processor.rb:70:in `process'
         7: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/diagram_processor.rb:106:in `rescue in process'
         6: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/plantuml/converter.rb:106:in `code'
         5: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/plantuml/converter.rb:110:in `load_code'
         4: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java_socket.rb:44:in `load'
         3: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java_socket.rb:50:in `instance'
         2: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java.rb:95:in `java'
         1: from /Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/java.rb:106:in `find_java'
/Library/Ruby/Gems/2.6.0/gems/asciidoctor-diagram-2.1.2/lib/asciidoctor-diagram/util/cli.rb:95:in `run': asciidoctor: FAILED: /Users/john/projects/not-rs-cfe/bna-documentation/index.adoc: Failed to load AsciiDoc document - java_home failed: The operation couldn’t be completed. Unable to locate a Java Runtime. (RuntimeError)
Please visit http://www.java.com for information on installing Java.

PlantUML is installed via homebrew and I can create PlantUML diagrams if I invoke plantuml directly from the CLI.

marmalodak commented 3 years ago

I was able to make progress by setting JAVA_HOME.

pepijnve commented 3 years ago

I'm sorry to hear you're having so many issues getting started. On macOS, the code looks for a Java runtime in the following order:

  1. ${JAVA_HOME}/bin/java
  2. $(/usr/libexec/java_home)/bin/java
  3. ${PATH}/java

Based on the output you were getting it looks like executing /usr/libexec/java_home was failing for some reason. The output

The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

is being generated by that command, not by the asciidoctor-diagram gem.

Could you run /usr/libexec/java_home -V in a terminal on your machine and copy the output here? Perhaps that gives us more information as to why it can't locate any JVMs.

marmalodak commented 3 years ago

My system has Java installed in a non-standard location. I made progress by setting JAVA_HOME correctly.

Thank you for your thoughtful response.