2010-02-15 11 views
23

मुझे अपने जेआरबी अनुप्रयोग को एक स्टैंडअलोन जेएआर फ़ाइल में संकलित करने की आवश्यकता है। मैं यह कैसे कर सकता हूँ?तैनाती JRuby JAR फ़ाइल बनाएँ?

+0

यह प्रश्न मदद कर सकता है: http://stackoverflow.com/questions/1921475/compile-jruby-hello-world-problem – atomicules

+0

उस प्रश्न को केवल (जे) रूबी स्क्रिप्ट को संकलित और निष्पादित करने के साथ ही जार के साथ नहीं करना है पैकेजिंग (तैनाती)। –

उत्तर

1

सिर्फ एक स्क्रिप्ट चलाने के लिए:

JRuby साइट एक runnable जार फ़ाइल है कि आप JRuby download page पर प्राप्त कर सकते हैं है। आप JRuby पूर्ण JAR फ़ाइल चाहते हैं। फिर आप

java -jar jruby-complete-1.4.0.jar <script> 

द्वारा अपना आवेदन चला सकते हैं मेरा मानना ​​है कि आप स्रोत से एक ही JAR फ़ाइल भी बना सकते हैं। डाउनलोड की गई स्रोत में क्या

ant --projecthelp 

पूरी तरह से एक जार फ़ाइल में एक रूबी स्क्रिप्ट एम्बेड करने के लिए: Embedding JRuby in Java एक अच्छा प्रारंभिक बिंदु है। आप संभवतः jruby-complete.jar फ़ाइल को अनजान करना चाहते हैं, अपनी जावा मुख्य श्रेणी जोड़ें जिसमें या तो एक जरुबी स्क्रिप्ट के लिए कॉलआउट है या इसमें रूबी कोड एम्बेडेड है, मैनिफेस्ट की मुख्य कक्षा को अपने नए एंट्री पॉइंट पर इंगित करने के लिए प्रतिस्थापित करें, और इसे जार करें बैक अप

4

rawr देखें। यह एक मणि है जो आपके आवेदन को एक जेएआर फ़ाइल में पैकेज करता है।

आप स्रोत कोड सुरक्षा के लिए संकलन आप (के रूप में वर्णित here) अपनी परियोजना में प्रत्येक स्क्रिप्ट के लिए एक .class फ़ाइल का उत्पादन होगा और उसके बाद

require 'the_corresponding_class_file' 
से प्रत्येक के लिए

के साथ मूल स्क्रिप्ट की सामग्री बदलना चाहते हैं संकलित स्क्रिप्ट्स।

2

JRuby 1.6 ने इसे बेहतर किया। विकी - StandaloneJarsAndClasses का अब एक वर्ग है - जो कि क्लास फ़ाइलों और स्टैंडअलोन जार उत्पन्न करने के लिए jrubyc का उपयोग करने के तरीके के बारे में बात करता है।

नया संकलक के साथ

, आप विकी है इस उदाहरण की तरह फाइलों .class निर्माण कर सकते हैं:

 
[email protected]:/tmp/fnx$ cat my_foo.rb 
class Foo 
    def bar(a, b) 
    puts a + b 
    end 
end 
[email protected]:/tmp/fnx$ ~/jruby/bin/jrubyc --javac my_foo.rb 
Generating Java class Foo to C:/cygwin/tmp/fnx/Foo.java 
javac -d C:/cygwin/tmp/fnx -cp C:/cygwin/home/james/jruby/lib/jruby.jar;. C:/cygwin/tmp/fnx/Foo.java 
[email protected]:/tmp/fnx$ ls 
Foo.class Foo.java my_foo.rb 
[email protected]:/tmp/fnx$ javap.exe Foo 
Compiled from "Foo.java" 
public class Foo extends org.jruby.RubyObject{ 
    public static org.jruby.runtime.builtin.IRubyObject __allocate__(org.jruby.Ruby, org.jruby.RubyClass); 
    public Foo(); 
    public java.lang.Object bar(java.lang.Object, java.lang.Object); 
    static {}; 
} 

और तुम org.jruby.JarBootstrapMain को एक जार के लिए entrypoint सेट और एक जार-बूटस्ट्रैप जोड़ सकते हैं आरआरबी फ़ाइल।

22

Warbler 1.3.0 या नए निष्पादन योग्य JAR फ़ाइल बनाने के लिए भी उपयोग किया जा सकता है।

त्वरित निर्देश। सुनिश्चित करें कि आप JRuby`s मणि, आदि यहाँ उपयोग कर रहे हैं:

$ gem install warbler 
$ mkdir bin 
$ cat <<EOF > bin/myapp 
#!/usr/bin/env jruby 

puts "Hello World" 

EOF 
$ chmod a+x bin/myapp 
$ warble jar 

अब आप मौजूदा निर्देशिका में एक myapp.jar फ़ाइल होनी चाहिए। README के मुताबिक आप lib निर्देशिका में किसी भी पुस्तकालयों को जोड़ना चाहते हैं और .jar फ़ाइल में डालने की आवश्यकता वाले किसी भी अन्य रत्न को नियंत्रित करने के लिए .gemspec या Gemfile का उपयोग करें (या दोनों) का उपयोग करें।

संबंधित मुद्दे