相关: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运行命令
我做错了什么,现在有更好的方法吗?
答案 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尚未发布)