我在Linux机器上部署了一个webapp,该webapp的代码打开一个对话框来选择下载路径,下面是使用JFileChooser的代码。
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.showOpenDialog(fileChooser);
homeFile = fileChooser.getSelectedFile().getAbsolutePath()
在Windows计算机上托管的Web应用程序上,它运行正常,并且可以正确打开对话框。但是对于Linux上托管的同一个Web应用程序,当我们尝试打开JFileChooser对话框时,它将抛出异常。
HTTP状态500-请求处理失败;嵌套异常为 java.awt.HeadlessException:输入异常报告
消息请求处理失败;嵌套异常为 java.awt.HeadlessException:
说明服务器遇到内部错误,阻止了它 满足此请求。
例外
org.springframework.web.util.NestedServletException:请求 处理失败;嵌套异常是java.awt.HeadlessException:否 设置了X11 DISPLAY变量,但是该程序执行了一个操作 这需要它。 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.accolite.app.filters.CORSFilter.doFilterInternal(CORSFilter.java:24) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 根本原因
java.awt.HeadlessException:未设置X11 DISPLAY变量,但这 程序执行了需要它的操作。 java.awt.GraphicsEnvironment.checkHeadless(未知源) java.awt.Window。(未知源)java.awt.Frame。(未知 来源)java.awt.Frame。(未知来源) javax.swing.SwingUtilities $ SharedOwnerFrame。(未知来源) javax.swing.SwingUtilities.getSharedOwnerFrame(未知来源) javax.swing.JOptionPane.getRootFrame(未知来源) javax.swing.JOptionPane.getWindowForComponent(未知来源) javax.swing.JOptionPane.getWindowForComponent(未知来源) javax.swing.JFileChooser.createDialog(未知源) javax.swing.JFileChooser.showDialog(未知源) javax.swing.JFileChooser.showOpenDialog(未知来源)
我想了解为什么在Linux上托管该应用程序时会产生问题,而在Windows上托管同一应用程序时却能正常工作。以及我们如何解决这个问题。