在 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 抱怨。
不过,我仍然很好奇我是怎么出错的。