Скомпилируйте jruby Hello world Problem

Я некоторое время программировал на Ruby, и мне это очень нравится. В последнее время у меня возникла потребность в компиляции рубинового кода. По нескольким причинам использование Ruby2exe для меня не вариант. Поэтому я решил попробовать Jruby (достаточно создать банку).

Я использую Windows и установил java JDK 6u17 (в C:\Program Files\Java\jdk1.6.0_17).

Я установил jruby 1.4 в папку C:\jruby.

Я создал приветственный мир в java, скомпилировал и выполнил его просто отлично (так что java работает нормально).

Я создал файл «script.rb» с:

puts "Hello, world"

Я запускаю эту программу с jruby:

jruby script.rb

И это работает нормально.

Я установил для JAVA_HOME значение C:\Program Files\Java\jdk1.6.0_17.

Я также успешно запускаю:

java -jar c:\jruby\lib\jruby.jar script.rb

Затем я компилирую с помощью команды:

jruby -S jrubyc script.rb

Он генерирует класс 'script.class'

Моя проблема в том, что я не нашел способа правильно выполнить script.class

Я пытаюсь:

java -cp .:c:\jruby\lib\jruby.jar script

И я получаю сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: script
Caused by: java.lang.ClassNotFoundException: script
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: script.  Program will exit.

Я также попытался скопировать jruby-complete-1.4.0.jar в локальный каталог, а также несколько других вариантов.

Кто-нибудь знает, что я делаю неправильно?


person Edu    schedule 17.12.2009    source источник
comment
Большое спасибо за этот вопрос. Я искал, как это сделать: jruby -S jrubyc script.rb, но все, что я мог найти, это страница ruby2java (kenai.com/projects/ruby2java/pages/Home), что означает необходимость использования класса в Ruby, и даже тогда я получил эти две ошибки 1 kenai.com/jira/browse/JVMSCRIPT-7 2 kenai.com/projects/ruby2java/lists/issues/archive/2009-09/   -  person atomicules    schedule 21.01.2010


Ответы (1)


Предполагая, что вы работаете в Windows, я думаю, что ваш аргумент -cp неверен: он должен быть разделен точкой с запятой:

java -cp .;c:\jruby\lib\jruby.jar script

Но также мне повезло, установив env CLASSPATH отдельно, например:


C:\ruby>set CLASSPATH=c:\Program Files\jruby-1.4.0\lib\jruby.jar;

C:\ruby>java hello_world
Hello, world!

Но, возможно, это потому, что моему пути к классам нужен пробел.

Какую версию JRuby вы используете? Как видите, у меня 1.4.

person Robert Brown    schedule 18.12.2009
comment
Работает отлично! Спасибо, Роб. Я знал, что это какая-то маленькая деталь, которую мне не хватало, потому что я следовал всем шагам. - person Edu; 18.12.2009