【问题标题】:changing to jruby, get RuntimeError: Server handler (thin) not found更改为 jruby,得到 RuntimeError: Server handler (thin) not found
【发布时间】:2021-01-26 16:57:40
【问题描述】:

我的应用程序在 MRI 1.9.2-p290 和 1.9.3-p125 中运行良好,但是当我更改为 jruby-1.7.0-preview1 时,我得到了描述的错误。这是完整的错误:

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,同样的错误。) 已经安装了 sinatra 和 thin gems(以及其他)。其实除了jruby而不是mri,其他都一样。

有什么想法吗?我在网上搜索并看到了这个错误,但它通常是针对 3rd 方工具的,似乎没有什么适用的。

编辑:还尝试通过

将瘦(我以前从未做过)安装到 linux 本身
sudo apt-get install thin

但仍然出现同样的错误。

【问题讨论】:

  • gem list 的输出有 thin 作为条目?
  • 是的,thin 已安装; gem list thin 返回thin (1.3.1)

标签: sinatra jruby thin


【解决方案1】:

sinatra 1.3.2(默认)仅检查大部分兼容 MRI 的服务器,请参阅: https://github.com/sinatra/sinatra/blob/e111243e813ede1f0f4c6918d9a8cc029e776fc3/lib/sinatra/base.rb#L1514

thin, mongrel 由于原生 C 代码,在 JRuby 上不起作用(尽管努力让它们在 JRuby 上使用一些“原生”Java 代码)

你有两个选择,要么在 JRuby 上调整设置的服务器,例如类似:

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

或使用给定的处理程序 rackup -s trinidad 构建您的应用程序

别忘了先gem install trinidad(在JRuby下)

【讨论】:

  • 尝试将服务器设置为 trinidad(当然是在安装之后)收到了一堆消息,例如 WARNING: Failed to scan [file:/home/jenko/Ruby/lib/extensions.jar] from classloader hierarchySEVERE: Failed to process JAR found at URL [jar:file:/home/jenko/Ruby/lib/jna.jar!/] for ServletContainerInitializers for context with name [/] 等。
  • 很抱歉,如果不深入了解您的应用程序,我无法为您提供帮助——这也取决于您运行 JRuby 的方式。 SO 最适合一次回答 1 个问题,您可能想尝试论坛、IRC 以获得逐步指导(或发布单独的问题以及有关您的应用的详细信息)
  • 同意。感谢您的努力。
【解决方案2】:

您可以安装thin 服务器,sinatra 将自动拾取。 要安装thin,可以执行以下命令

gem install thin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    相关资源
    最近更新 更多