2

rawr で jar ファイルを作成するのに問題があります。OS X Lion で JRuby 1.6.5.1 を使用しています。

インストール:

jruby --1.9 -S rawr install

src ディレクトリに、以下を含む単純な hello_jruby.rb を作成します。

puts "Hello JRuby!"

build_configuration.rb ファイルには次の設定があります。

c.project_name = "hello_jruby"
c.executable_type = "console"
c.main_ruby_file = "hello_jruby"

jar ファイルを生成します。

$ jruby --1.9 -S rake rawr:jar
mkdir -p package/classes/java
javac -target 1.6 -cp lib/java/jruby-complete.jar:src -sourcepath src -d package/classes/java src/org/monkeybars/rawr/Main.java
mkdir -p package/classes/ruby
Copying source file src/hello_jruby.rb to package/classes/ruby/hello_jruby.rb
cp src/hello_jruby.rb package/classes/ruby/hello_jruby.rb
mkdir -p package/classes/META-INF
mkdir -p package/jar
=== Creating jar file: package/jar/hello_jruby.jar
cp lib/java/jruby-complete.jar package/jar/lib/java/jruby-complete.jar

jar ファイルを実行しても、出力は出力されません。

$ java -jar ./hello_jruby.jar 

$ java -cp .:./lib/java/jruby-complete.jar -jar ./hello_jruby.jar 

なぜこれが機能しないのか、私は完全に混乱しています。Windows で試してみましたが、rawr で使用される CLASSPATH セパレータはセミコロン (;) ではなくコロン (:) であるため、rawr:jar は機能しません。

何かが足りないか、rawr の使い方が完全に理解できていません。

どんなアイデアでも大歓迎です。御時間ありがとうございます!

編集: 追加の試行と結果

最新のJRubyをインストールしました(RVMを使用していません):

$ jruby --1.9 -v
jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_33) [darwin-x86_64-java]

Java のバージョン:

$ java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

最新のrawrをインストールしました:

$ jruby --1.9 -S gem install rawr --source http://gems.neurogami.com
Fetching: rawr-1.6.3.gem (100%)
Successfully installed rawr-1.6.3
1 gem installed

私が気づいたことの 1 つは、rawr 実行可能ファイルが Ruby 1.9.2 ディレクトリーに配置されていることです。これは正常であり、予想されることですか?

$ which rawr
/Users/david/.rvm/gems/ruby-1.9.2-p290/bin/rawr

次のコマンドは現在失敗しています。以前、RVM を使用して JRuby をインストールしました。最新の JRuby をインストールする前に、RVM JRuby をアンインストールしました。

$ jruby --1.9 -S rake -T
(in /Users/david/Dropbox/SourceCode/Ruby/RubySandbox/rawr_test)
rake aborted!
no such file to load -- ftools

(See full trace by running task with --trace)

ただし、ruby 1.9.2 経由で rake を実行すると動作します。

$ rake -T

以下を使用してjarを生成しました。

$ rake rawr:jar

jar を生成するときにまだ出力やエラーが発生しません。

$ java -jar ./hello_jruby.jar 
$

JRuby を使用してスクリプトを実行すると、成功します。

$ jruby --1.9 ./hello_jruby.rb 
Hello JRuby!

生成された jar には、次のファイルがあります。

$ ls -R
META-INF        java            ruby
hello_jruby.rb      org         run_configuration

./META-INF:
MANIFEST.MF

./java:

./org:
monkeybars

./org/monkeybars:
rawr

./org/monkeybars/rawr:
Main.class

./ruby:

TEST01: システム JRuby を使用し、RVM Ruby 1.9.2 を回避します。

$ rvm use ruby-1.9.2

$ gem uninstall rawr

$ rvm system

$ jruby --1.9 -S gem install rawr --source http://gems.neurogami.com

$ which rawr
/Library/Frameworks/JRuby.framework/Versions/Current/bin/rawr

$ jruby --1.9 -S rawr install

$ jruby --1.9 -S rake rawr:jar

rawr 実行可能ファイルは別の場所にあります。ただし、まだjarから出力が得られません。--1.9 なしですべての jruby コマンドを試しても違いはありませんでした。Windowsでももう一度試してみます。

次のテストは、最新の rawr ソースをプルして、前述の手順を実行することです。

再度、感謝します!

4

1 に答える 1

3

まず、いいえ。1.9.2のインストールではgemは表示されないはずです。RVMは、まだ1.9.2を使用していると見なす必要があります。JRubyはrvmの外部にあるため、rvm systemrvmがインストールされているすべてのRubyを無視するように入力します。最初に1.9.2からrawrをアンインストールすることをお勧めします。

(余談ですが、1.9.3 Rubyの下にrawrをインストールしましたが、それでも問題なく動作しました。奇妙です。)

コメントのフォローアップ:いくつか掘り下げましたが、neurogami.comでホストされているgemはまだgitHEADの背後にあるようです。それを使用しているftoolsについても同じエラーが発生しました。(UbuntuとWindowsで)それを機能させるために私がしたことは次のとおりです。

  1. gem install bones
  2. gem install rspec -v 1.3.0
  3. git clone https://github.com/rawr/rawr.git
  4. cd rawr
  5. rake gem:package
  6. gem install pkg/rawr-1.6.3.gem
  7. cd ..
  8. mkdir rawr-test-TEMP
  9. cd rawr-test-TEMP
  10. rawr install
  11. hello_jruby.rbを作成し、build_configuration.rbに適切な構成オプションを追加します(c.target_jvm_version = 1.7rawrがJava 7のインストールを取得しなかったため、追加する必要もありました)
  12. rawrgemのディレクトリ内のlib/zip/zip.rbの行667を編集します。最後に閉じ括弧を追加します。これはアップストリームrawrのバグです。
  13. rake rawr:jar
于 2012-06-27T19:53:42.463 に答える