ユーザーシステム上のファイルにアクセスする必要がある JavaFX アプリケーションを開発しています。このようなアクセス権を得るには、アプリケーションに署名する必要があることを知っているので、アプリケーションに署名しました。ただし、アプリは引き続き java.security.AccessControlException をスローします。
-アプリケーション
public class TestApp extends Application
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage)
{
primaryStage.setTitle("Hello World!");
StackPane root = new StackPane();
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
public void callJSFunc(JSObject func)
{
File fleExample = new File("F:/myfile.xml");
func.call("call", fleExample.exists());
}
}
それから私はアプリに署名しに行きました
keytool -genkey -keystore myKeyStore -alias me
keytool -selfcert -keystore myKeyStore -alias me
jarsigner -keystore myKeyStore TestApp.jar me
だから私はjavascriptからアプリcallJSFuncを呼び出しました
function deployIt()
{
dtjava.embed(
{
id: "my2",
url: "TestApp.jnlp",
width: 300,
height: 200,
placeholder: "here"
},
{
javafx: "2.1+",
jvm: "1.6.0+"
},
{
onJavascriptReady: callApp
});
}
function callApp(id)
{
var app = document.getElementById(id);
app.callJSFunc(function(e){ alert(e); });
}
dtjava.addOnloadCallback(deployIt);
しかし、私のアプリはブラウザでこれを出力しました
Uncaught Error: java.security.AccessControlException: access denied ("java.io.FilePermission" "F:/myfile.xml" "read")
また、ローカルホストでアプリをテストしました。アプリをシグした後にこの例外をスローする理由がわかりません。私は何を間違っていますか?ありがとう