gpt4 book ai didi

java - 是否有一种安全的编程方式来确定打开 Swing 窗口是否安全?

转载 作者:搜寻专家 更新时间:2023-11-01 01:04:22 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,用户可以通过运行 java -jar app.jar 从命令行调用,或者通过双击 .jar 文件从桌面环境调用。

我希望该应用程序能够检测它是否可以安全地启动 Swing GUI,或者它是否必须使用命令行界面。如果我只是开始调用 Swing 函数而不检查窗口系统的可用性,Java 会抛出一个内部错误。

例如,如果我取消设置 DISPLAY 并运行应用程序,我会得到:

java.lang.InternalError: Can't connect to X11 window server using '' as the value of the DISPLAY variable.    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)    at java.security.AccessController.doPrivileged(Native Method)    at sun.awt.X11GraphicsEnvironment.(X11GraphicsEnvironment.java:142)    at java.lang.Class.forName0(Native Method)    at java.lang.Class.forName(Class.java:186)    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)    at sun.awt.X11.XToolkit.(XToolkit.java:112)    at java.lang.Class.forName0(Native Method)    at java.lang.Class.forName(Class.java:186)    at java.awt.Toolkit$2.run(Toolkit.java:849)    at java.security.AccessController.doPrivileged(Native Method)    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)        [etc]

在这种情况下,我可以尝试...捕获 InternalError 并运行命令行界面,但我听说不应该捕获错误,因为它们可能会使 JVM 处于不一致状态。 (如有不妥请指正)

有什么方法可以检查我是否可以安全地打开 Swing 窗口而不捕获内部错误? (我可以只检查 DISPLAY 环境变量是否不为空,但非空 DISPLAY 并不能保证 X 服务器实际工作。这种方法在非 X11 环境中也不起作用。)

最佳答案

关于java - 是否有一种安全的编程方式来确定打开 Swing 窗口是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5893236/

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