2012-06-02 54 views
1

我的应用程序在MRI 1.9.2-p290和1.9.3-p125中工作正常,但是当我更改为jruby-1.7.0-preview1时,错误描述。下面是完整的错误:更改为jruby,得到RuntimeError:未找到服务器处理程序(瘦)

RuntimeError: Server handler (thin) not found. 
    detect_rack_handler at /home/qry_dev/.rvm/gems/jruby-1.7.0.preview1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1402 
      run! at /home/qry_dev/.rvm/gems/jruby-1.7.0.preview1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1293 
      (root) at /home/qry_dev/Ruby/query_engine/query_webserver.rb:320 
      load at org/jruby/RubyKernel.java:1017 
      (root) at -e:1 

(我试过JRuby的1.6.6不已,同样的错误。) 的西纳特拉和薄宝石(等等)都已经安装。事实上,除了jruby而不是mri,一切都是一样的。

任何想法?我搜索了网页并看到了这个错误,但通常是针对第三方工具,似乎没有任何应用。

编辑:也尝试安装薄(这是我以前从未做过的那样)通过

sudo apt-get install thin 

到Linux本身,但仍然得到同样的错误。

+0

的'宝石list'输出有'thin'作为一款入门? – Kashyap

+0

是的,安装薄; 'gem list thin' returns'thin(1.3.1)' – davej

回答

2

西纳特拉1.3.2(默认)仅适用于大多MRI兼容的服务器检查,请参阅: https://github.com/sinatra/sinatra/blob/e111243e813ede1f0f4c6918d9a8cc029e776fc3/lib/sinatra/base.rb#L1514

杂种不要在JRuby由于本机C代码工作(虽然有功夫让他们在JRuby上使用一些“原生”Java代码)

您有两个选项,可以在JRuby上调整集服务器是这样的:

set :server, %w[trinidad webrick] if defined?(JRUBY_VERSION) 

或与给定的处理器rackup您的应用程序rackup -s trinidad

不要忘记gem install trinidad第一(在JRuby中)

+0

尝试将设置服务器设置为trinidad(当然安装后)得到了一堆消息,例如警告:无法扫描[file:/ home/jenko/Ruby/lib/extensions.jar]来自classloader hierarchy'和'SEVERE:无法处理在名为[/]的上下文的ServletContainerInitializers的URL [jar:file:/home/jenko/Ruby/lib/jna.jar!/]中找到的JAR。 '等等。 – davej

+1

对不起,如果不详细了解您的应用程序,我无法帮助您 - 取决于您如何运行JRuby。 SO最适合一次回答1个问题,您可能想尝试一个论坛,IRC获取一步一步的指导(或单独发布有关您的应用的详细信息) – kares

+0

Concur。感谢您的努力。 – davej

相关问题