- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个 Web 应用程序,它利用 JOptionPane 向用户显示一些对话框,例如“未找到记录等”。我在 Windows 中进行了此开发,一切正常。
然后我被要求在远程服务器上部署项目 war ,该服务器是没有任何 GUI 的 RHEL 机器(类似于 AWS 机器)。当我在那里运行我的应用程序时,只要有 JOptionPane 语句,我都会收到下面提到的异常。
线程“http-bio-8080-exec-6”中出现异常 java.lang.InternalError:无法使用“localhost:1.0”作为 DISPLAY 变量的值连接到 X11 窗口服务器。 在 sun.awt.X11GraphicsEnvironment.initDisplay( native 方法) 在 sun.awt.X11GraphicsEnvironment.access 200 美元(X11GraphicsEnvironment.java:62) 在 sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178) 在 java.security.AccessController.doPrivileged( native 方法) 在 sun.awt.X11GraphicsEnvironment。(X11GraphicsEnvironment.java:142) 在 java.lang.Class.forName0( native 方法) 在 java.lang.Class.forName(Class.java:188) 在java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) 在 sun.swing.SwingUtilities2.isLocalDisplay(SwingUtilities2.java:1393) 在javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1563) 在javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:147) 在 javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1599) 在 javax.swing.UIManager.setLookAndFeel(UIManager.java:530) 在 javax.swing.UIManager.setLookAndFeel(UIManager.java:570) 在 javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1320) 在 javax.swing.UIManager.initialize(UIManager.java:1407) 在 javax.swing.UIManager.maybeInitialize(UIManager.java:1395) 在 javax.swing.UIManager.getDefaults(UIManager.java:644) 在 javax.swing.UIManager.getString(UIManager.java:790) 在 javax.swing.UIManager.getString(UIManager.java:807) 在 javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:610)
我已经尝试过使用导出DISPLAY也尝试过
System.setProperty("java.awt.headless", "true");
boolean headless = GraphicsEnvironment.isHeadless();
但是我的问题还没有解决吗?有任何输入吗?我不应该在 Web 应用程序中使用 JOptionPane 吗?如果没有那么更好的选择是什么? JOption 的替代品?
最佳答案
您绝对不能在 Web 应用程序中使用 JOptionPane。并且甚至不要考虑在 Swing 中使用任何其他 JWhatever 类。
JOptionPane 和其他各种 Swing 组件仅出现在运行它们的计算机上。因此,即使您能够克服遇到的异常,并以某种方式显示 JOptionPane,JOptionPane 也会出现在服务器1上。 它不会出现在用户的浏览器中,因此用户不会看到它。
那么,假设这个 JOptionPane 已经出现在服务器上。用户应该如何阅读或忽略它?他们只能访问自己的浏览器。
简单的答案是他们不能。
更糟糕的是,JOptionPanes 是模态的,因为创建它们的调用只有在对话框关闭后才会返回。如果用户输入的型号不存在,您的 Web 应用程序将显示为挂起,因为在 JOptionPane 关闭之前它无法完成页面服务。随着越来越多的用户使用您的系统,整个应用程序最终将陷入停顿,因为越来越多的 Web 应用程序的工作线程陷入等待 JOptionPanes 被关闭的状态。
相反,您需要以某种方式将错误消息发送回浏览器。
如果用户输入的型号不存在,我建议重定向回输入型号的页面,并在此页面上显示一条消息,让用户清楚地知道他们被重定向回,因为他们输入了不存在的型号。
您的代码可能在您的计算机上运行正常,但这只是因为您从运行 Web 服务器的同一台计算机上浏览 Web 应用程序。
1:从技术上讲,如果您的客户端计算机上有 X 服务器并且可以按照 Jim Garrison 的描述进行设置,那么您可以向客户端显示此 JOptionPane,但这绝对不是您可以假设的事情。
关于Java:无法使用 'localhost:1.0' 作为 DISPLAY 变量的值连接到 X11 窗口服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962302/
除了 Display.getOrientation() 已弃用之外,Display.getRotation() 和 Display.getOrientation() 之间还有什么区别? 是否都返回等于
我的问题 这些方法中有哪一种是专业网页设计师所偏爱的吗? Web 浏览器在绘制网站时是否首选这些方法中的任何一种? 这只是个人喜好吗? 我还缺少其他技巧吗? 注意:以上问题是关于设计多列布局 floa
我的问题 专业网页设计师是否喜欢这些方法? 网页浏览器在绘制网站时是否首选这些方法? 这只是个人喜好吗? 我还缺少其他技术吗? 注意:以上问题与设计多列布局有关 float :左; http://js
我有一些代码返回 MyTrait 类型的特征对象,这样它就可以返回几个不同结构之一。我想为 trait 对象实现 Display trait,这样我就可以打印对象,并将详细信息委托(delegate)
package polymorphism; /* * @author Rahul Tripathi */ public class OverLoadingTest { /** *
我希望 Display.timerExec(int,Runnable)与 Display.asyncExec(Runnable) 大致相同但有指定的延迟。然而,似乎Display.timerExec只
就像标题所暗示的,有什么区别吗?我当时使用的是pygame.display.flip,我在互联网上看到的是,他们使用pygame.display.update而不是使用flip。哪一个更快? 最佳答案
Sample.this.display() 和 this.display() 哪个更好? class Sample{ void display(){ System.out.println("d
当图像的 CSS 属性“显示”已被任何其他 JS 脚本/函数更改时,我想运行一些 JS 代码。有什么方法可以监视该更改并设置回调函数吗? $(this).bind.('propertychange',
在浏览 Google 字体时我注意到第一个过滤器包含这些类别: Serif Sans 衬线 展示 手写 我知道什么是 (Sans)Serif 和 Handwriting 类别(这很明显)但是显示类别过
我想知道是否可以在列标记内渲染自定义 html,这是显示表标记的一部分。 例如,我希望我的专栏里面有一些下拉列表? 使用纯 html,如下所示: ... Volvo Saab Me
display.newImage() 和 display.newImageRect() 有什么区别? 哪个更好用? 最佳答案 display.newImage() 的文档具体提到: NOTE: dis
我正在使用纯 JS 和 flexbox 为我的元素创建网格。 元素的某些部分在页面加载时被显示隐藏:无,但单击按钮后它应该在不显示和阻止之间切换。 可悲的是,这完全破坏了 display: flex
我目前正在参加 HTML/CSS 类(class),这本书推荐我使用.desktop {display:none;}/.mobile {display:inline;} 以及div class="de
这个问题在这里已经有了答案: Css transition from display none to display block, navigation with subnav [duplicat
我理解 style="display: none" 隐藏一个 HTML 元素,而 style="display: block" 显示一个 block 级 HTML 元素。 我看到一些使用 style=
设置控件的样式 display: none 和 display: block 有什么区别? 最佳答案 display 属性定义了某个 HTML 元素应该如何显示。 Display block 和 no
这个问题已经有答案了: Javascript AND operator within assignment (7 个回答) 已关闭 4 年前。 假设我只想在 this.state.display 为
我不确定如何命名这个问题,因为我是 Rust 新手,所以请随意提出修改建议。 我有两个结构。一个是 Job 结构,其中包含一些数字,例如作业需要多长时间等。另一个是 JobSequence,其中包含
我不确定如何命名这个问题,因为我是 Rust 新手,所以请随意提出修改建议。 我有两个结构。一个是 Job 结构,其中包含一些数字,例如作业需要多长时间等。另一个是 JobSequence,其中包含
我是一名优秀的程序员,十分优秀!