HeadlessException для JFileChooser showOpenDialog в веб-приложении, размещенном на Linux - PullRequest
0 голосов
/ 26 октября 2018

У меня есть веб-приложение, развернутое на Linux-машине, у этого веб-приложения есть код, который открывает диалоговое окно для выбора пути загрузки, ниже приведен код, который использует JFileChooser для того же.

    JFileChooser fileChooser = new JFileChooser();

    fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

    fileChooser.showOpenDialog(fileChooser);

    homeFile = fileChooser.getSelectedFile().getAbsolutePath()

В веб-приложении, размещенном на компьютере с Windows, оно работает нормально и корректно открывает диалоговое окно. Но для того же веб-приложения, размещенного в Linux, когда мы пытаемся открыть диалоговое окно JFileChooser, оно выдает ниже исключения.

HTTP Status 500 - Ошибка обработки запроса; вложенное исключение java.awt.HeadlessException: тип Отчет об исключении

сообщение Ошибка обработки запроса; вложенное исключение java.awt.HeadlessException:

description Сервер обнаружил внутреннюю ошибку, которая помешала ему от выполнения этого запроса.

исключение

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. И как мы можем решить эту проблему.

...