讓我們先從這些步驟演示問題:如何在Internet Explorer中使用JavaScript創建Java對象?
打開一些網頁,加載在Internet Explorer 9的Java小程序和一個真正的瀏覽器(Firefox或Chrome)。例如,我們使用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的答案。
當然,這會起作用,但它不是一個在JavaScript中構造Java對象的通用解決方案,因爲那樣我必須在Java applet中實現東西。我的目標是在JavaScript中做所有事情。 Java applet(可以是任何applet,甚至是空的)只是用來訪問Java包。 – kayahr
編輯我的答案。 –