月別アーカイブ: 2011年1月

jruby on rails3 + JavaEE Server + WindowsでUnknown Error(20047)

JavaEE Server(tomcatしかりglassfishしかり)でUnknown Error

サーバーログが以下の通り

2011/01/02 13:52:35 org.apache.catalina.core.ApplicationContext log
致命的: Application Error
org.jruby.rack.RackInitializationException: Unknown error – Unknown Error (20047) – C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\dosaf\WEB-INF\classpath:
    from classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:217:in `mkdir_p’
    from classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:215:in `reverse_each’
    from classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:215:in `mkdir_p’
    from classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:201:in `each’
    from classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p’
    from C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:259:in `configure_gem_home_and_path’
    from C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:72:in `configure’
    from C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:126:in `definition’
     … 9 levels…
    from classpath:/vendor/rack-1.2.1/rack/builder.rb:46:in `initialize’
    from <script>:2:in `new’
    from <script>:2

    at org.jruby.rack.DefaultRackApplicationFactory$4.init(DefaultRackApplicationFactory.java:183)
    at org.jruby.rack.DefaultRackApplicationFactory.getApplication(DefaultRackApplicationFactory.java:60)
    at org.jruby.rack.PoolingRackApplicationFactory.getApplication(PoolingRackApplicationFactory.java:94)
    at org.jruby.rack.DefaultRackDispatcher.process(DefaultRackDispatcher.java:28)
    at org.jruby.rack.RackFilter.doFilter(RackFilter.java:63)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:310)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:575)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1555)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.jruby.exceptions.RaiseException: Unknown error – Unknown Error (20047) – C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\dosaf\WEB-INF\classpath:
    at (unknown).new(classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:243)
    at FileUtils.fu_mkdir(classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:217)
    at FileUtils.mkdir_p(classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:215)
    at Array.reverse_each(classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:215)
    at FileUtils.mkdir_p(classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:201)
    at Array.each(classpath:/META-INF/jruby.home/lib/ruby/1.8/fileutils.rb:201)
    at FileUtils.mkdir_p(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:259)
    at #<Class:01x359ad71f>.configure_gem_home_and_path(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:72)
    at #<Class:01x359ad71f>.configure(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:126)
    at #<Class:01x359ad71f>.definition(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:116)
    at #<Class:01x359ad71f>.load(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:100)
    at #<Class:01x359ad71f>.setup(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/config/boot.rb:8)
    at (unknown).(unknown)(C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/dosaf/WEB-INF/config/boot.rb:165)
    at Kernel.require(classpath:/jruby/rack/rails.rb:165)
    at JRuby::Rack::RailsBooter::Rails3Environment.load_environment(classpath:/jruby/rack/rails.rb:173)
    at JRuby::Rack::RailsBooter::Rails3Environment.to_app(classpath:/jruby/rack/rails.rb:194)
    at #<Class:01x4a30db6d>.new(<script>:2)
    at (unknown).(unknown)(classpath:/vendor/rack-1.2.1/rack/builder.rb:46)
    at Kernel.instance_eval(classpath:/vendor/rack-1.2.1/rack/builder.rb:46)
    at Kernel.instance_eval(classpath:/vendor/rack-1.2.1/rack/builder.rb:46)
    at Rack::Builder.initialize(<script>:2)
    at (unknown).new(<script>:2)
    at (unknown).(unknown)(:1)

対処法

WEB-INF/gems/gems/bundler-1.0.7/lib/bundler.rb:259の
FileUtils.mkdir_p bundle_path.to_sをコメントアウトする

※ただし、この対処法はあんまり検証してないので注意。たぶん問題はないと思うけれど。