2009-12-17 35 views
5

Tôi đã được lập trình một lúc với Ruby và tôi thực sự thích nó. Gần đây tôi bắt đầu có nhu cầu biên dịch một số mã ruby. Đối với một số lý do sử dụng Ruby2exe không phải là một lựa chọn cho tôi. Vì vậy, tôi quyết định thử JRuby (tạo ra một cái lọ sẽ đủ tốt).Biên dịch jruby "Xin chào thế giới" vấn đề

Tôi đang sử dụng các cửa sổ và tôi đã cài đặt java JDK 6u17 (tại C: \ Program Files \ Java \ jdk1.6.0_17).

Tôi đã cài đặt JRuby 1.4 tại C: \ JRuby

Tôi tạo ra một thế giới hello trong java, biên dịch và thực thi nó chỉ tốt (vì vậy java hoạt động tốt).

Tôi tạo ra một tập tin "script.rb" với:

puts "Hello, world"

tôi chạy chương trình này với JRuby:

jruby script.rb

Và nó hoạt động tốt.

tôi đã thiết lập JAVA_HOME đến C: \ Program Files \ Java \ jdk1.6.0_17

Tôi cũng thành công chạy:

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

sau đó tôi biên dịch bằng lệnh:

jruby -S jrubyc script.rb

Nó tạo lớp 'script.class'

Vấn đề của tôi là tôi thấy không có cách nào để thực hiện đúng script.class

tôi cố gắng:

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

Và tôi nhận được thông báo lỗi:

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. 

Tôi cũng đã cố gắng sao chép jruby-complete-1.4.0.jar vào thư mục cục bộ cũng như một số tùy chọn khác.

Bất kỳ ai cũng biết tôi đang làm gì sai?

+0

Cảm ơn rất nhiều vì câu hỏi này. Tôi đã tìm kiếm cách thực hiện điều này: 'jruby -S jrubyc script.rb', nhưng tất cả những gì tôi có thể tìm thấy là trang ruby2java (http://kenai.com/projects/ruby2java/pages/Home) có nghĩa là phải sử dụng một lớp trong Ruby, và thậm chí sau đó tôi có hai lỗi này ** 1 ** http://kenai.com/jira/browse/JVMSCRIPT-7 ** 2 ** http://kenai.com/projects/ruby2java/lists/issues/archive/2009-09/message/0 – atomicules

Trả lời

9

Giả sử bạn đang ở trên cửa sổ, tôi nghĩ arg -cp của bạn là sai: nó phải dấu chấm phẩy phân:

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

Nhưng cũng có thể, tôi có may mắn hơn bằng cách thiết lập env classpath riêng biệt, ví dụ:


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

C:\ruby>java hello_world 
Hello, world! 

Nhưng có lẽ đó là vì classpath của tôi cần một khoảng trống trong đó.

Bạn đang sử dụng phiên bản JRuby nào? Như bạn có thể thấy, tôi đang trên 1,4.

+0

Hoạt động hoàn hảo ! Cảm ơn Rob. Tôi biết đó là một số chi tiết nhỏ mà tôi đã bỏ lỡ vì tôi đã làm theo tất cả các bước. – Edu

Các vấn đề liên quan