如何判断我的程序是作为小程序运行,还是作为Java应用程序运行

如何判断我的程序是作为小程序运行,还是作为Java应用程序运行,java,exception,applet,Java,Exception,Applet,我已经写了一个笨重的小突破克隆&我正在写磁盘来保存游戏和高分 有没有一种简单的方法可以让我检查我的程序是作为小程序运行还是作为应用程序运行 例如 我尝试在“main”类中设置一个布尔变量,用init()将其设置为false,在main方法中设置为true,但到目前为止没有成功。不管怎样,我们都会继续尝试,但请提前感谢您的建议 使用。您可以将所有调用包装在AccessController.doPrivileged块中 AccessController.doPrivileged(new Privil

我已经写了一个笨重的小突破克隆&我正在写磁盘来保存游戏和高分

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

例如

我尝试在“main”类中设置一个布尔变量,用init()将其设置为false,在main方法中设置为true,但到目前为止没有成功。不管怎样,我们都会继续尝试,但请提前感谢您的建议

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

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
        }
});
我建议使用第一种方法。如果您确实使用了第二个,那么将flag变量设置为final;因此,您需要在存储此标志的类的构造函数中执行任何“特权测试”

附录

如果遇到代码片段,它们将继续抛出
AccessControlException
s。如果要继续处理而不妨碍用户,则必须捕获它们,同时将标志设置为false。存在
AccessController.doPrivilege
块以检查当前堆栈帧是否存在权限

附录2

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

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
        }
});