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}
我正在使用 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}