首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用警告程序创建jRuby 1.9 Sinatra应用程序失败

使用警告程序创建jRuby 1.9 Sinatra应用程序失败
EN

Stack Overflow用户
提问于 2012-01-17 00:37:46
回答 1查看 708关注 0票数 1

我有一个简单的Sinatra应用程序,我将托管在tomcat作为一个战争。当我对其进行警告并在tomcat中运行它时,一切都运行正常。如果我在warble配置中设置了Ruby1.9标志

config.webxml.jruby.compat.version = "1.9“

然后war就不会运行,我会在tomcat日志中看到以下错误

代码语言:javascript
复制
INFO: An exception happened during JRuby-Rack startup
no such file to load -- mysinatraapp
--- System
jruby 1.6.5.1 (ruby-1.9.2-p136) (2011-12-27 1bf37c2) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_29) [darwin-x86_64-java]
Time: 2012-01-16 10:06:32 -0600
Server: Apache Tomcat/7.0.23
jruby.home: file:/apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.6.5.1.jar!/META-INF/jruby.home

--- Context Init Parameters:
jruby.compat.version = 1.9
jruby.max.runtimes = 1
jruby.min.runtimes = 1
public.root = /
rack.env = production

--- Backtrace
LoadError: no such file to load -- mysinatraapp
        require at org/jruby/RubyKernel.java:1047
        require at file:/apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.6.5.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36
         (root) at /apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/config.ru:2
  instance_eval at org/jruby/RubyBasicObject.java:1720
     initialize at file:/apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/lib/jruby-rack-1.1.3.jar!/vendor/rack-1.3.6/rack/builder.rb:51
         (root) at /apache-tomcat-7.0.23/webapps/ROOT/WEB-INF/config.ru:1

mysinatraapp.rb文件在war中,所以我不明白为什么它找不到它。这个应用程序在jruby中从命令行运行时运行得很好,所以我不认为这是一个与我的代码和1.9兼容的问题。即使只是从web.xml中删除这些行

代码语言:javascript
复制
<context-param>
<param-name>jruby.compat.version</param-name>
<param-value>1.9</param-value>
</context-param>

将让应用程序正常启动。

我的jar的版本是jruby-core-1.6.5.1.jar jruby-rack 1.1.3.jar jruby-stdlib-1.6.5.1.jar

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-21 03:30:00

我认为这可以通过1.8和1.9之间负载路径行为的细微变化来解释(MRI也是如此,而不仅仅是JRuby)。见证者:

代码语言:javascript
复制
$ jruby -v -rpp -e 'pp $LOAD_PATH'
jruby 1.7.0.dev (ruby-1.8.7-p357) (2012-01-12 0e83d96) (Java HotSpot(TM) Client VM 1.6.0_29) [darwin-i386-java]
["/Users/nicksieger/Projects/ruby/jruby/lib/ruby/site_ruby/1.8",
 "/Users/nicksieger/Projects/ruby/jruby/lib/ruby/shared",
 "/Users/nicksieger/Projects/ruby/jruby/lib/ruby/1.8",
 "."]

$ jruby -v --1.9 -rpp -e 'pp $LOAD_PATH'
jruby 1.7.0.dev (ruby-1.9.3-p6) (2012-01-12 0e83d96) (Java HotSpot(TM) Client VM 1.6.0_29) [darwin-i386-java]
["/Users/nicksieger/Projects/ruby/jruby/lib/ruby/site_ruby/1.9",
 "/Users/nicksieger/Projects/ruby/jruby/lib/ruby/shared",
 "/Users/nicksieger/Projects/ruby/jruby/lib/ruby/1.9"]

因此,您可能必须显式地将'.'$servlet_context.getRealPath("/WEB-INF")添加到config.ru内的加载路径中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8883167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档