gpt4 book ai didi

java - 如何判断我的程序是作为 Applet 运行还是作为 Java 应用程序运行

转载 作者:搜寻专家 更新时间:2023-10-31 20:23:13 24 4
gpt4 key购买 nike

我写了一个笨拙的小突破克隆,我正在写入磁盘以保存游戏和高分。

有没有一种简单的方法可以让我检查我的程序是作为小程序运行还是作为应用程序运行?

例如...

if(!anApplet){
//Include disk i/o features
}

我已经尝试在“main”类中设置一个 boolean 变量,使用 init() 将其设置为 false,并在 main 方法中将其设置为 true,但到目前为止没有成功。无论如何都会继续尝试,但在此先感谢您的任何建议!

最佳答案

使用 AccessController .您可以将所有调用包装在 AccessController.doPrivileged block 中。

AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
// privileged code goes here, for example, read and writing files.
...
return null; // nothing to return
}
});

如有必要,您还可以在启动时建立您的应用程序拥有的权限,并在以后使用它们:

Boolean flag = AccessController.doPrivileged(new PrivilegedAction() {
public Boolean run() {
boolean flag = false;
// privileged code goes here, for example, read and writing files. If it succeeds, set flag to true.
...
return flag; // return true, if the privileged action succeeded
}
});

我建议使用第一种方法。如果你确实使用了第二个,那么让标志变量本质上是最终的;因此,您需要在存储此标志的类的构造函数中执行任何“特权测试”。

附录

如果遇到代码片段,将继续抛出 AccessControlException。如果你想继续处理,而不妨碍用户,那么你必须捕获他们,同时将标志设置为 false。 AccessController.doPrivilege block 用于检查当前堆栈帧的权限是否存在。

附录#2

使用 AccessController.checkPermission不推荐,除非您可以保证存在安全管理器和适当的策略文件。在没有安全管理器的情况下,此方法将始终抛出权限检查异常,这在应用程序未作为小程序运行时是不可取的。

关于java - 如何判断我的程序是作为 Applet 运行还是作为 Java 应用程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260485/

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