java - JRuby Warbler not creating usable executable JAR files -
i've been trying jruby script simple in nature requires net::ssh perform task on remote computer , exit. when issue command jruby testssh.rb
, program works flawlessly, however, when use warbler compile jar, receive errors not being able load net::ssh.
> java -version java version "1.7.0_45" java(tm) se runtime environment (build 1.7.0_45-b18) java hotspot(tm) 64-bit server vm (build 24.45-b08, mixed mode) > pik use jruby-1.7.1 > jruby -s warble jar c:/ruby/jruby-1.7.10/lib/ruby/gems/shared/gems/rawr-1.7.0/lib/zip/zip.rb:28: use rbconfig instead of obsolete , deprecated config. rm -f test-ssh.jar creating test-ssh.jar > java -jar test-ssh.jar loaderror: no such file load -- net/ssh require @ org/jruby/rubykernel.java:1085 require @ file:/c:/users/user/appdata/local/temp/jruby4935218336857439685extract/jruby-stdlib-complete-1.7.11.jar!/meta-inf/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55 (root) @ test-ssh.rb:7 load @ org/jruby/rubykernel.java:1101 (root) @ file:/c:/users/user/dropbox/programming/ruby/jruby/net-ssh/test-ssh/test-ssh.jar!/meta-inf/main.rb:1 require @ org/jruby/rubykernel.java:1085 (root) @ file:/c:/users/user/appdata/local/temp/jruby4935218336857439685extract/jruby-stdlib-complete-1.7.11.jar!/meta-inf/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1 require @ file:/c:/users/user/appdata/local/temp/jruby4935218336857439685extract/jruby-stdlib-complete-1.7.11.jar!/meta-inf/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55 error: org.jruby.embed.evalfailedexception: (loaderror) no such file load -- net/ssh
i put files gem, , added spec.add_runtime_dependency = "net-ssh"
gemspec, and:
require 'net/ssh' gem "net-ssh"
into gemfile. when run jruby -s warble
, different error. noticed, bundler, , ruby didn't play '-' in name, had recreate file again.
> jruby -s warble c:/ruby/jruby-1.7.10/lib/ruby/gems/shared/gems/rawr-1.7.0/lib/zip/zip.rb:28: use rbconfig instead of obsolete , deprecated config. no default executable found in test-ssh.gemspec, using bin/test-ssh.rb rm -f test-ssh.jar creating test-ssh.jar > java -jar testssh.jar loaderror: no such file load -- testssh/bin/testssh.rb load @ org/jruby/rubykernel.java:1101 (root) @ file:/c:/users/user/dropbox/programming/ruby/jruby/net-ssh/testssh/testssh.jar!/meta-inf/main.rb:1 require @ org/jruby/rubykernel.java:1085 (root) @ file:/c:/users/user/appdata/local/temp/jruby6762643836642223701extract/jruby-stdlib-complete-1.7.11.jar!/meta-inf/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1 require @ file:/c:/users/user/appdata/local/temp/jruby6762643836642223701extract/jruby-stdlib-complete-1.7.11.jar!/meta-inf/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55 error: org.jruby.embed.evalfailedexception: (loaderror) no such file load -- testssh/bin/testssh.rb
i'm @ loss needs done, , i've found lot of half-baked answers questions similar this, or people have left bugs on warbler github page more year no answers.
the gist code , errors located here: https://gist.github.com/predatorian3/10191754
the solution was:
the way bundler creates ruby gems utilizes git, , wasn't using git add .
include changed directories. once did git add .
, git commit
, warbler picked directories missing first go around. gem dependency, simple editing .gemspec file, , including runtime_dependency
each gem had required own gem. after that, warbler included dependencies, , jar file can run without jruby installed.
it needs file can run when run jar! can specify 1 in gemspec, default bin/.rb. no such file exists, error.
Comments
Post a Comment