gpt4 book ai didi

JavaFX - 无法使用已签名的应用程序访问文件系统

转载 作者:行者123 更新时间:2023-11-29 03:43:58 25 4
gpt4 key购买 nike

我正在开发一个需要访问用户系统上的文件的 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") 

此外,我还在我的本地主机上测试了该应用程序。我不明白为什么在签署应用程序后会抛出此异常。请问我做错了什么?谢谢

最佳答案

不要使用 keytool 和 jarsigner 对应用进行签名。

而是使用 javafx deployment tools 打包、签署并准备好您的应用程序以进行部署例如 javafxpackager 或 JavaFX ant 任务。

确保您的 jnlp file requests elevated permissions .如果您使用的是 JavaFX ant 任务,则可以使用 fx:permissions 请求 JavaFX 生成具有提升权限的适当 jnlp。条款。

关于JavaFX - 无法使用已签名的应用程序访问文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com