在没有JRuby的情况下在WAS中运行Rake任务

时间:2012-11-01 02:57:11

标签: java ruby-on-rails jruby warbler

相关:Executing rake tasks on an exploded war on tomcat without jruby being installed

我正在尝试在没有安装JRuby的Tomcat服务器中运行rake任务。我正在使用warbler创建一个war文件。

使用链接问题的答案,我跑了:

java -cp lib/jruby-core*.jar:lib/jruby-stdlib*.jar org.jruby.Main -S rake -T

这让我错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main
Caused by: java.lang.ClassNotFoundException: org.jruby.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)

ls lib让我:

ems-gems-activerecord-jdbc-adapter-1.2.2-lib-arjdbc-jdbc-adapter_java.jar
gems-gems-jdbc-sqlite3-3.7.2-lib-sqlite-jdbc-3.7.2.jar
gems-gems-jruby-jars-1.6.8-lib-jruby-core-1.6.8.jar
gems-gems-jruby-jars-1.6.8-lib-jruby-stdlib-1.6.8.jar
gems-gems-jruby-rack-1.1.10-lib-jruby-rack-1.1.10.jar
gems-gems-json-1.7.5-java-lib-json-ext-generator.jar
gems-gems-json-1.7.5-java-lib-json-ext-parser.jar
gems-gems-therubyrhino_jar-1.7.4-jar-rhino-1.7R4.jar
gems-gems-warbler-1.3.6-lib-warbler_jar.jar
jruby-core-1.6.8.jar
jruby-rack-1.1.10.jar
jruby-stdlib-1.6.8.jar
ojdbc6.jar

打开jruby-core-1.6.8.jar文件,我可以看到确实存在org/jruby/Main.class个文件。

从文件列表中可以看出,没有jruby-complete jar文件,因此我无法从https://stackoverflow.com/a/9982556/684934运行命令

我做错了什么,现在有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

2个月前我正在研究一个类似的问题,所以事情可能已经发生了变化,但我需要在我的类路径中包含所有的jar,必须使用bin存根,并且必须设置GEM_HOME以使一切正常。它可能更简单,但你引用的帖子也不适用于我。

我实际安装了jruby,(但我只用它来构建连接类路径),所以我的设置是这样的:

cd /path/to/application/
export GEM_HOME=/path/to/application/gems
export CLASSPATH=$(jruby -e 'puts Dir["lib/*.jar"].join(":")')

RAILS_ENV=production java -cp $CLASSPATH org.jruby.Main bin/rake -T

同样有用的是,jruby-jars gem可以包含在你的gem文件中,以设置warbler包含的jruby版本(我使用gem 'jruby-jars', '1.7.0.preview2'因为1.7.0尚未发布)