0

在 Java HotSpot(TM) 服务器 VM 1.7.0_76-b13 +indy [linux-i386] 上使用:jruby 1.7.4 (1.9.3p392) 2013-05-16 2390d3b

当我尝试使用 java.awt.Image 中的内存图像源时,我收到“未初始化的常量”错误。如果我明确地这样做

import java.awt.Image.MemoryImageSource 

然后我得到“Java::JavaAwt::Image:Class 的未定义方法`MemoryImageSource'”。JRuby 是否出于某种原因不支持此类?或者,MemoryImageSource 是否以某种方式不在 1.7 中?

编辑:我写了一个快速的 Java 测试:

import java.awt.image.MemoryImageSource;
class HelloWorldApp {
    public static void main(String[] args) {
        MemoryImageSource ms;
        System.out.println("Hello World! I can find MemoryImageSource"); // Display the string.
    }
}

而且我找到 MemoryImageSource 没有问题,所以问题似乎是 JRuby。

java -version
java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) Server VM (build 24.76-b04, mixed mode)

编辑:

意识到尚不清楚其他 Java 方面在 JRuby 中是否正常工作(例如,我可以创建一个 JFrame 并使用 JPanel 在其上绘制小方块)。

编辑:

也许问题在于我如何尝试导入 MemoryImageSource?当我编写一个使用 MemoryImageSource 的 Java 类时,我可以很好地从 JRuby 访问它(只是不能直接使用 MemoryImageSource)。现在,这是一个不错的解决方法,因为我的 java 返回了我从 MemoryImageSource 创建的图像,而没有 Ruby 抱怨。

不过,我仍然很好奇我是怎么出错的。

4

1 回答 1

0

你只是做了一些完全不同的事情(注意正确的外壳):

java_import java.awt.Image.MemoryImageSource首先解决 java.awt.Image在您的情况下(不幸的是)存在的问题,然后尝试MemoryImageSource在 Java 类上调用该方法

因此,您所追求的是java_import java.awt.image.MemoryImageSourceJRuby 假定java.awt.image是一个包并在其下查找一个类

于 2015-05-02T07:38:52.980 回答