【问题标题】:Running Java GUI applications through a Linux terminal通过 Linux 终端运行 Java GUI 应用程序
【发布时间】:2011-07-11 15:24:03
【问题描述】:

我在 Ubuntu 上尝试通过终端运行 Java GUI 应用程序。当我尝试运行它时,我得到了一个 HeadlessException。下面是堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173)
    at java.awt.Window.<init>(Window.java:437)
    at java.awt.Frame.<init>(Frame.java:419)
    at java.awt.Frame.<init>(Frame.java:384)
    at javax.swing.JFrame.<init>(JFrame.java:174)
    at gui.ImageViewer.<init>(ImageViewer.java:34)
    at displayrunner.DisplayRunner$1.run(DisplayRunner.java:15)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647)
    at java.awt.EventQueue.access$000(EventQueue.java:96)
    at java.awt.EventQueue$1.run(EventQueue.java:608)
    at java.awt.EventQueue$1.run(EventQueue.java:606)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:617)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

我在运行应用程序之前尝试了export DISPLAY=:0.0,但没有效果。如何通过 Bash 运行 GUI 应用程序?

【问题讨论】:

    标签: java linux user-interface bash ubuntu


    【解决方案1】:

    我有这个例外。我尝试将无头设置设置为 false,它对我有用:

    export JAVA_TOOL_OPTIONS='-Djava.awt.headless=false'
    

    【讨论】:

    • 这对我不起作用,但确实导致它提供了更有用的消息(缺少库)
    【解决方案2】:

    如果您通过以下命令在 Ubuntu 上运行应用程序:

    java -jar MyJar.jar
    

    然后使用 OpenJDK。尝试安装 Sun JDK 并运行您的应用程序:

    /usr/java/jre1.6.0_22/bin/java -jar MyJar.jar
    

    【讨论】:

    • 或者,您可以使用命令update-java-alternatives 来选择您机器上的默认Java。
    【解决方案3】:

    如果您没有 GUI,则无法运行它。您是否在远程运行(例如 SSH)?

    如果是这样,请查看您用于远程访问的系统。例如,对于 SSH,您希望查看 AllowX11Forwarding 设置 (SSH FAQ entry)

    【讨论】:

    • 我不是远程的。我在笔记本电脑上运行 Ubuntu。
    • 那么如果你没有运行一个GUI,你就不能运行一个GUI应用程序。
    • 啊,你是通过 X 中的终端运行这个吗?在这种情况下,您需要查看终端的说明以确保正确设置了 DISPLAY 变量。不幸的是,有多少不同的终端就有多少可能性。尝试使用 XTerm 等基本终端进行故障排除。
    【解决方案4】:

    我猜你只安装了default-jre-headless 包。检查您是否拥有default-jre

    【讨论】:

    • 为我工作,谢谢。软件包在 Ubuntu 中,但未安装。 “sudo apt-get install openjdk-6-jre”
    • 也为我工作。就我而言,我只安装了 default-jdk-headless。所以,我安装了 default-jdk
    • 只是备注:在 Fedora/RedHat 发行版中,这个包被称为 'java-N.N.N-openjdk'(其中 NNN 是版本号)
    猜你喜欢
    • 1970-01-01
    • 2023-01-29
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多