私は、Javascriptを使用してコーディングしようとしているWebP時代のJavaアプレットを持っています。
public class WebCapture extends Applet {
public String[] getSourceDeviceNames() {
return new String[] {'Device 1', 'Device 2'};
}
public void acquireImage() {
//...
}
}
このアプレットとサポートライブラリをjarファイルにコンパイルすると、次のようにHTMLページに含まれます。
<embed id="webCaptureApplet"
code="com.brian.webcapture.applets.WebCapture"
archive="jar/WebCapture.jar"
type="application/x-java-applet">
<noembed>
Oops! It looks like Java is not installed. =[
</noembed>
</embed>
これは効果的だと思われます。画面に空白のJavaアプレットがレンダリングされているのがわかります。
document.getElementById('webCaptureApplet');
alert()
オブジェクトを作成して応答を受け取ることができます[object HTMLEmbedElement]
素晴らしい。ここで、次のコードを実行しようとすると、次のようになります。
var applet = document.getElementById('webCaptureApplet');
var devices = applet.getSourceDeviceNames();
for(var i = 0; i < devices.length; i++) {
alert(devices[i]);
}
オブジェクトを含む行にブレークポイントを付加し、 firebugfor()
でオブジェクトを検査すると、のtoString()
値devices
は[Ljava.lang.String;@1d0b3465です。配列が返されるので、これは理にかなっていると思いtoString()
ます。単純な値を表示するのは適切ではありません。
フロアループを見るとdevices.length
、表示されている値は、public netscape.javascript.JSException(java.lang.String, java.lang.String, int, java.lang.String, int)
私はJavaを呼び出すJavascriptの使い方を数え切れないほど読んでいますが、かなりシームレスな相互運用のように見えるものでどこが間違っているのかわかりません。
ある時点ではOSX上のFirefoxで動作していたと言えますが、キャッシュされたアプレットを保持しているため、問題が何であるか混乱しています。ワークステーションとラップトップの両方でキャッシュを削除しようとしましたが、まだ古いjarファイルにしがみついているようです。これがどれだけ私に影響を与えているのかわかりません。
getSourceDeviceNames
私のアプレットが文字列または文字列の配列を返しても、違いはないようです。検査時に同じエラーが表示されます。キャッシュがそれに影響を与えているかどうかはわかりません。