JRuby 在 awt.Image 中没有 MemoryImageSource 吗?

Does JRuby not have MemoryImageSource in awt.Image?

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

当我尝试使用 java.awt.Image 中的内存图像源时,出现 "uninitialized constant" 错误。如果我明确地做

import java.awt.Image.MemoryImageSource 

然后我得到 Java::JavaAwt::Image:Class 的“未定义方法‘MemoryImageSource’” “。JRuby 是否出于某种原因不支持此 class?或者,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 class 时,我可以从 JRuby 访问它(只是不能直接访问 MemoryImageSource)。目前,这是一个不错的解决方法,因为我的 java returns 我从 MemoryImageSource 创建的图像没有 Ruby 抱怨。

不过我还是很好奇我是怎么出错的。

你只是做了一些完全不同的事情(注意合适的大小写):

java_import java.awt.Image.MemoryImageSource 先解决 java.awt.Image 在您的情况下(不幸的是)存在,然后尝试在 Java class

上调用 MemoryImageSource 方法

你想要的是 java_import java.awt.image.MemoryImageSource 因此 JRuby 假设 java.awt.image 是一个包并在它下面寻找 class