У меня есть веб-приложение, развернутое на 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. И как мы можем решить эту проблему.