让我们从通过这些步骤演示问题开始:
在 Internet Explorer 9 和真正的浏览器(Firefox 或 Chrome)中打开一些加载 Java 小程序的网页。让我们以http://javatester.org/version.html为例。
在 JavaScript 控制台中运行此代码:
j = document.applets[0].Packages; image = new j.java.awt.image.BufferedImage(256, 256, 2); image.getWidth();
这适用于 Firefox 和 Chrome,它输出正确的图像宽度 256。但 Internet Explorer 失败,它在第二行显示此错误消息:
"java.lang.IllegalArgumentException: No method found matching name java.awt.image.BufferedImage and arguments []"
知道为什么这会失败吗?我能够实例化具有默认构造函数的其他 Java 类。所以这段代码可以正常工作:
new j.java.util.Random().nextInt()
那么,也许 Internet Explorer 或 Java 插件存在将参数传递给构造函数的错误?错误消息听起来像是 IE 尝试在没有任何参数的情况下调用构造函数(并且 BufferedImage 中没有默认构造函数)。
我对任何有助于我理解这个问题、修复它或找到解决方法的信息(可能是现有的错误报告)感兴趣。请注意,这个问题是关于从 JavaScript 实例化 java 对象,而不是如何创建图像。所以请不要回答有关使用 Canvas 的问题。