gpt4 book ai didi

jruby - 莺似乎使用了一个不理解 size_t 的不同 ffi

转载 作者:行者123 更新时间:2023-12-01 02:28:46 24 4
gpt4 key购买 nike

FFI懂:size_t当通过 jRuby 运行 rails 时,但不是在使用 Warbler 创建 .war 文件并使用 java -jar my_project.war 运行之后或 Tomcat 。

                       Linux | Windows
-----------------------------+-------------
java -jar works | doesn't work
tomcat works | doesn't work
rails s (using jruby) works | works

Linux 和 Windows 在比较中使用相同的 war 文件。

这是运行 java -jar 的回溯的顶部在 Windows 上。 (我在回溯中编辑了文件路径的开头)。
--- Backtrace
TypeError: unable to resolve type 'size_t'
find_type at jar:file:/my_project.war/WEB-INF/lib/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared/ffi/types.rb:55
type_size at jar:file:/my_project.war/WEB-INF/lib/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared/ffi/types.rb:147
SQLAnywhere at my_project.war/WEB-INF/gems/gems/sqlanywhere-ffi-1.0.1/lib/sqlanywhere.rb:13
(root) at my_project.war/WEB-INF/gems/gems/sqlanywhere-ffi-1.0.1/lib/sqlanywhere.rb:5
require at org/jruby/RubyKernel.java:1027

当我查看回溯中的文件时,它们列出了各种 c 类型,但没有列出 size_t .

在我看来,jRuby 有 2 个 FFI 可用。
  • normal FFI gem .
  • jruby-stdlib ffi。

  • 2的最大区别,好像只有前者懂 :size_t .

    我的问题是:是否有 2 个不同的 FFI?
    如果是这样:我如何确保我的 gem 加载了正确的 ffi?
    如果不是:我做错了什么?

    PS:我是 sqlanywhere-ffi gem 的作者,所以如果问题是我依赖错误的东西,我可以改变它。目前它有 ffi 作为 gemspec、gemfile 和它的依赖项 requires 'ffi'在主要入口点。

    最佳答案

    (I've edited the beginnings of the file paths in the backtrace).



    我猜你的 Tomcat 目录的完整路径包含空格,确保它没有。

    jruby-1.6 版本没有出现这个问题。

    关于jruby - 莺似乎使用了一个不理解 size_t 的不同 ffi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462959/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com