JRuby 问题创建 Java type cast float array

JRuby issues creating Java type cast float array

我正在使用 jruby-9.2.6.0 导入 Java pdf 库。 PDColor 是一个 class ,它用一个浮点数组和一个字符串常量实例化。 Java example code that I'm referencing 如下所示:

import org.apache.pdfbox.pdmodel.graphics.color.PDColor;

PDColor componentColor = new PDColor(new float[]{1, 0, 0}, PDDeviceRGB.INSTANCE);

jruby 中,我的代码如下所示:

import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;

float_arr = [1.to_f, 0.to_f, 0.to_f]
componentColor = PDColor.new(float_arr, PDDeviceRGB::INSTANCE)

问题是,似乎 float_arr 参数没有输入为浮点数组,因此我们得到以下错误:

NameError (no constructor for arguments (org.jruby.RubyArray,org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB) on Java::OrgApachePdfboxPdmodelGraphicsColor::PDColor)
  available overloads:
    (org.apache.pdfbox.cos.COSArray,org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)
    (org.apache.pdfbox.cos.COSName,org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)
    (float[],org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

jruby 中是否有已知方法将 Ruby 浮点数组转换为 Java 浮点数组?

@TilmanHausherr, the constructor expects a Java array of primitive floats. To create it, you can call Array#to_java(:float)所述。

这是一个测试此行为的小程序。 pdfbox-2.0.15.jar 应该与脚本在同一个文件夹中,应该是 运行 和 jruby:

require './pdfbox-2.0.15.jar'
java_import 'org.apache.pdfbox.pdmodel.graphics.color.PDColor'
java_import 'org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB'
red = PDColor.new([1.0, 0, 0].to_java(:float), PDDeviceRGB::INSTANCE)
puts red
#=> PDColor{components=[1.0, 0.0, 0.0], patternName=null}