【发布时间】:2021-02-05 11:21:22
【问题描述】:
目前我正在尝试通过 ssh 使用 x11 远程运行 Intellij Idea,这样我就可以在我的个人 iMac 上看到这些小部件,但 IDE 实际上是在我发布的 MacPro 上运行的。这样一来,我就可以在电晕爆发期间在家中使用尺寸合适的显示器工作,而不会违反公司关于个人计算机上与工作相关的代码的政策。为此,我在工作机器上运行的 SSH 守护程序上启用了 X11 转发,并在两台机器上安装了 xquartz。从我的家用机器上,我可以 ssh 进入我的工作机器并运行 xclock 和 xeyes 等 x11 程序,没有任何问题。当我尝试运行 Idea 时,出现异常:
/Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea
2020-03-17 20:29:57,056 [ 2940] ERROR - nsions.impl.ExtensionPointImpl - null
java.awt.HeadlessException
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.intellij.openapi.wm.impl.welcomeScreen.FlatWelcomeFrame.<init>(FlatWelcomeFrame.java:93)
at com.intellij.openapi.wm.impl.welcomeScreen.FlatWelcomeFrameProvider.createFrame(FlatWelcomeFrameProvider.java:27)
at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.lambda$createWelcomeFrame$1(WelcomeFrame.java:177)
at com.intellij.openapi.extensions.impl.ExtensionProcessingHelper.computeSafeIfAny(ExtensionProcessingHelper.java:45)
at com.intellij.openapi.extensions.ExtensionPointName.computeSafeIfAny(ExtensionPointName.java:60)
at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.createWelcomeFrame(WelcomeFrame.java:177)
at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.prepareToShow(WelcomeFrame.java:159)
at com.intellij.idea.IdeStarter.main(ApplicationLoader.kt:510)
at com.intellij.idea.ApplicationLoader$startApp$8$1.run(ApplicationLoader.kt:240)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193)
at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:239)
at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
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:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
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)
2020-03-17 20:29:57,058 [ 2942] ERROR - nsions.impl.ExtensionPointImpl - IntelliJ IDEA 2019.3.3 Build #IU-193.6494.35
2020-03-17 20:29:57,058 [ 2942] ERROR - nsions.impl.ExtensionPointImpl - JDK: 11.0.5; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o
2020-03-17 20:29:57,058 [ 2942] ERROR - nsions.impl.ExtensionPointImpl - OS: Mac OS X
2020-03-17 20:29:57,067 [ 2951] ERROR - nsions.impl.ExtensionPointImpl - Last Action:
2020-03-17 20:29:57,068 [ 2952] ERROR - llij.ide.plugins.PluginManager - java.awt.HeadlessException
java.util.concurrent.CompletionException: java.awt.HeadlessException
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
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:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
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)
Caused by: java.awt.HeadlessException
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.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.<init>(WelcomeFrame.java:48)
at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.createWelcomeFrame(WelcomeFrame.java:178)
at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame.prepareToShow(WelcomeFrame.java:159)
at com.intellij.idea.IdeStarter.main(ApplicationLoader.kt:510)
at com.intellij.idea.ApplicationLoader$startApp$8$1.run(ApplicationLoader.kt:240)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193)
at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:239)
at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
... 19 more
我尝试设置一个idea.vmoptions -Djava.awt.headless=false 来帮助它找出实际上有一个远程显示设备,但这无济于事。欢迎任何帮助。我确信我不是唯一一个在家工作并遇到这个问题的人。
【问题讨论】:
-
您需要 X Window 服务器环境和
export DISPLAY=:0才能运行 GUI 应用程序。您可以运行任何其他 Java Swing 应用程序,例如 JEdit 或 NetBeans 吗? -
就像我说的其他 GUI 程序,即 xclock 和 xeyes 也可以工作。为什么idea不应该工作呢? Jetbrains 确实支持 x11
-
您可以运行任何其他 Java Swing 应用程序,例如 JEdit 或 NetBeans 吗?
-
IntelliJ IDEA 可能看不到您的
DISPLAY环境变量。尝试从终端运行:export DISPLAY=:0,然后是/Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea。见stackoverflow.com/a/26586170/104891。还要检查这个答案是否有帮助:stackoverflow.com/a/26224404/104891. -
intellij 的 macos 版本可能不支持 X。毕竟,Macos 自己的 GUI 不是基于 X 的。使用屏幕共享可能会带来更好的运气。