I'm using warbler to package my JRuby web app into a war file and am deploying it to Apache Tomcat 8.0.21. This works well. However, I'm trying to run warbler using the "compiled" command instead:
warble compiled war
When I deploy the resulting war file, I'm getting the following exception :
org.jruby.rack.RackInitializationException: load error: /apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/config/boot -- java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.invoke.SwitchPoint
from org/jruby/RubyKernel.java:1054:in `require'
from jar:file:/apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.7.4.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:36:in `require'
from file:/apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/lib/jruby-rack-1.1.13.3.jar!/jruby/rack/rails/environment3.rb:23:in `load_environment'
from file:/apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/lib/jruby-rack-1.1.13.3.jar!/jruby/rack/rails_booter.rb:79:in `load_environment'
from <script>:1:in `(root)'
at org.jruby.rack.RackInitializationException.wrap(RackInitializationException.java:29)
at org.jruby.rack.RackApplicationFactoryDecorator.init(RackApplicationFactoryDecorator.java:98)
at org.jruby.rack.RackServletContextListener.contextInitialized(RackServletContextListener.java:50)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4728)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5166)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1738)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: org.jruby.exceptions.RaiseException: (LoadError) load error: /apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/config/boot -- java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.invoke.SwitchPoint
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1054)
at RUBY.require(jar:file:/apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.7.4.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:36)
at RUBY.load_environment(file:/apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/lib/jruby-rack-1.1.13.3.jar!/jruby/rack/rails/environment3.rb:23)
at RUBY.load_environment(file:/apache-tomcat-8.0.21/webapps/ROOT/WEB-INF/lib/jruby-rack-1.1.13.3.jar!/jruby/rack/rails_booter.rb:79)
at RUBY.(root)(<script>:1)
How come the compiled version is producing an exception? Any help is appreciated. Thanks!
I think this was a bug related to the warbler gem. I just upgraded my JRuby version from 1.7.4 to 1.7.5 and also upgraded warbler from 1.4.3 to 1.4.8 and that fixed this issue.