2009-12-17 6 views
5

J'ai programmé pendant un moment avec Ruby et je l'apprécie vraiment. Dernièrement, j'ai commencé à avoir besoin de compiler du code ruby. Pour plusieurs raisons, l'utilisation de Ruby2exe n'est pas une option pour moi. J'ai donc décidé d'essayer Jruby (générer un pot suffirait).Compilez jruby "Hello world" problème

J'utilise les fenêtres et j'ai installé JDK Java 6u17 (C: \ Program Files \ Java \ jdk1.6.0_17).

I installé JRuby 1.4 C: \ JRuby

J'ai créé un monde bonjour en java, compiler et exécutaient très bien (donc fonctionne bien java).

J'ai créé un fichier "script.rb" avec:

puts "Hello, world"

Je lance ce programme avec JRuby:

jruby script.rb

Et cela fonctionne très bien.

Je ne mis JAVA_HOME à C: \ Program Files \ Java \ jdk1.6.0_17

J'ai aussi courir avec succès:

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

je compile puis avec la commande:

Il génère la classe 'script.class'

Mon problème est que j'ai trouvé aucun moyen d'exécuter correctement script.class

J'essaie:

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

Et je reçois le message d'erreur:

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. 

J'ai aussi essayé copier jruby-complete-1.4.0.jar dans le répertoire local ainsi que plusieurs autres options.

Quelqu'un sait ce que je fais mal?

+0

Merci beaucoup pour cette question. J'ai cherché comment faire ceci: 'jruby -S jrubyc script.rb', mais tout ce que j'ai pu trouver était la page ruby2java (http://kenai.com/projects/ruby2java/pages/Home) qui signifie avoir à utiliser une classe dans Ruby, et même alors j'ai eu ces deux erreurs ** 1 ** http://kenai.com/jira/browse/JVMSCRIPT-7 ** 2 ** http://kenai.com/projects/ruby2java/lists/issues/archive/2009-09/message/0 – atomicules

Répondre

9

En supposant que vous êtes sur Windows, je pense que votre -cp arg est erroné: il devrait être point-virgule délimité:

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

Mais aussi, j'ai eu plus de chance en mettant l'env CLASSPATH séparément, par exemple:


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

C:\ruby>java hello_world 
Hello, world! 

Mais peut-être parce que mon classpath a besoin d'un espace dedans.

Quelle version de JRuby utilisez-vous? Comme vous pouvez le voir, je suis sur 1.4.

+0

Fonctionne parfaitement ! Merci Rob. Je savais que c'était une sorte de petit détail qui me manquait parce que je suivais toutes les étapes. – Edu