我正在加載 Ubuntu 20.04 的無頭 PC 上測驗程式。在我的開發 PC(客戶端)上,我將程式打包到一個 jar 中,并使用 ssh 將該 jar 復制到無頭 PC(服務器)。該 jar 包含一個基本的 Swing GUI,我想使用開發 PC 與之互動。開發 PC 還運行 Ubuntu 20.04。
我嘗試在服務器上設定 X11 DISPLAY 變數
export DISPLAY=:0.0
但它不起作用,我該怎么做才能解決這個問題?
編輯在設定 DISPLAY 變數之前,錯誤訊息是:
Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:208)
at java.desktop/java.awt.Window.<init>(Window.java:548)
at java.desktop/java.awt.Frame.<init>(Frame.java:423)
at java.desktop/java.awt.Frame.<init>(Frame.java:388)
at java.desktop/javax.swing.JFrame.<init>(JFrame.java:180)
at com.mochilafulfillment.agv.gui.RemoteGui.<init>(RemoteGui.java:21)
at com.mochilafulfillment.agv.modes.RemoteControlMode$1.run(RemoteControlMode.java:30)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
設定 DISPLAY 變數后,錯誤訊息是:
java.awt.AWTError: Cant connect to X11 window server using '0.0' as the value of the DISPLAY variable.
at java.desktop/sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:102)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:61)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:101)
at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(GraphicsEnvironment.java:83)
at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:129)
at java.desktop/sun.awt.X11.XToolkit.<clinit>(XToolkit.java:232)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:588)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:583)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:582)
at java.desktop/java.awt.Toolkit.getEventQueue(Toolkit.java:1498)
at java.desktop/java.awt.EventQueue.invokeLater(EventQueue.java:1312)
at java.desktop/javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1421)
at com.mochilafulfillment.agv.modes.RemoteControlMode.run(RemoteControlMode.java:27)
at com.mochilafulfillment.agv.Agv.run(Agv.java:53)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
uj5u.com熱心網友回復:
無法通過 SSH 終端運行 Swing GUI。
我將制作一個單獨的 GUI 應用程式,它在客戶端上運行并將資料(可能通過 HTTP)發送到運行主應用程式的服務器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511849.html
上一篇:MouseListener和MouseMotionListener不適用于JPanel里面有JComponents
