Java アプレットを使用して gml ファイルを選択し、xsd スキームで検証しています。
String selectedPath;
FileDialog selectFileDialog;
private String ShowFileDialog(String title, String extension) {
selectFileDialog.setFile(extension);
selectFileDialog.setTitle(title);
selectFileDialog.setVisible(true);
if (selectFileDialog.getFile() == null)
return null;
return selectFileDialog.getDirectory() + selectFileDialog.getFile();
}
public void SelectFile(){
selectedPath = ShowFileDialog("Select file", "*.gml");
}
public void ProcessFile(){
InputStream inputStream = new FileInputStream(new File(selectedPath));
InputSource inputSource = new InputSource(inputStream);
//... sending file to sax parser
}
GUI は、これらの関数を呼び出す 2 つの java.awt ボタンのみで構成されています。
Manifest.MF ファイルに含まれるもの
権限: すべての権限
許可の問題のため、jar ファイルにも署名しました。だから、間違いなく機能しています。
しかし、問題は、JavaScript からこれらの (パブリック) 関数をトリガーすると、以下の例外がスローされることです。
//This functions is working properly, shows FileDialog and selecting file
document.applets[0].SelectFile();
//This function throws exception.
//Instead of clicking this button i can click java gui button and execute function properly
document.applets[0].ProcessFile();
access denied ("java.io.FilePermission" "blablafile.gml" "read")
Java gui 要素を使用したくないので、純粋な HTML 要素からこれらのイベントをトリガーする必要があります。