【问题标题】:Problem running IntelliJ Idea remotely via xquartz (x11 for mac). java.awt.HeadlessException通过 xquartz(x11 for mac)远程运行 IntelliJ Idea 时出现问题。 java.awt.HeadlessException
【发布时间】: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 的。使用屏幕共享可能会带来更好的运气。

标签: macos ssh x11 xquartz


【解决方案1】:

Mac 版 IntelliJ 不使用 X11。启动 IntelliJ 的那一刻,它将显示在您的 MacPro 上。多年来,MacOS 上的 Java 应用程序可以进行 X11 转发是一个很大的误解。

您需要使用 IntelliJ for Linux,在 Linux(可能是 Docker 容器)上运行来进行 X11 转发。

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2022-01-01
    • 2017-07-28
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多