我无法让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使用的类路径分隔符是冒号(:)而不是分号(;),因此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
我注意到的一件事是rawr可执行文件被放在Ruby 1.9.2目录中这正常吗?
$ which rawr
/Users/david/.rvm/gems/ruby-1.9.2-p290/bin/rawr
下面的命令现在失败了。我以前用rvm安装过jruby。在安装最新的JRuby之前,我卸载了rvmjruby。
$ 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获得输出我甚至尝试了所有的JRuby命令,但没有——1.9,没有区别。我也要在窗户上再试一试。
下一个测试是提取最新的rawr源并运行上述指令。
再次感谢!
最佳答案
第一:不,gem可能不应该出现在1.9.2安装中。rvm一定认为你还在用1.9.2。由于JRuby不在rvm中,请键入rvm system
忽略所有安装了rvm的ruby您可能希望首先从1.9.2中卸载rawr。
(旁白:我刚刚在我的1.9.3 ruby下安装了rawr,它仍然运行良好。很奇怪。)
后续我的评论:我做了一些挖掘,看起来neurogami.com上的gem仍然在git head后面。我在使用ftools时也犯了同样的错误。我所做的工作(在Ubuntu和Windows上)是:gem install bones
gem install rspec -v 1.3.0
git clone https://github.com/rawr/rawr.git
cd rawr
rake gem:package
gem install pkg/rawr-1.6.3.gem
cd ..
mkdir rawr-test-TEMP
cd rawr-test-TEMP
rawr install
创建hello_jruby.rb并添加适当的配置选项来构建_configuration.rb(我还必须添加c.target_jvm_version = 1.7
,因为rawr没有安装我的java 7)
编辑rawr gem目录中lib/zip/zip.rb的第667行——在末尾添加右括号这是上游Rawr的一个漏洞。rake rawr:jar
关于ruby - 无法通过非常简单的JRuby脚本来获取Rawr来构建jar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11214921/