【发布时间】:2009-02-08 18:49:12
【问题描述】:
我尝试使用 EventMachine 等,与 JRuby。我收到有关本机扩展的错误。我相信这是由于 Java 的限制。我认为我在 Windows 上的事实使问题进一步复杂化。一些澄清将不胜感激。哪些扩展可以/不能与 JRuby 一起使用?我怎么知道?谢谢。
【问题讨论】:
我尝试使用 EventMachine 等,与 JRuby。我收到有关本机扩展的错误。我相信这是由于 Java 的限制。我认为我在 Windows 上的事实使问题进一步复杂化。一些澄清将不胜感激。哪些扩展可以/不能与 JRuby 一起使用?我怎么知道?谢谢。
【问题讨论】:
遗憾的是,JRuby 不支持原生扩展,因为它们依赖于特定于 C 实现的特定内存和运行时细节。
通常你可以在 JVM 上找到一个等效的库来替代它......
要完成LDomagala's answer,也可以参考this thread 相关的同一个“原生扩展”问题
某些安装脚本可能依赖RUBY_PLATFORM 来确定是否根据您的操作系统构建本机扩展。如果您在 Windows 上,它不会构建它们。
避免原生编译的另一种方法是使用 ENV var 'NORUBYEXT'。
但这仍然可能需要对 ruby 安装脚本进行一些调整...
【讨论】:
在 jruby 中使用原生扩展没有真正简单的方法。本机扩展正在调用无法在 jruby 中调用的 c 代码,而无需在 java 中实现它。除此之外,一些扩展正在查看 jruby 端口,例如您提到的 EventMachine。
据我所知,查看是否可以将 gem/extension 与 jruby 一起使用的唯一方法是阅读文档、尝试或阅读源代码
【讨论】: