簡體   English   中英

無法使用 Ubuntu 運行 Java GUI 程序

[英]Unable to run Java GUI programs with Ubuntu

我正在用 Java 學習 GUI,為此我創建了一個演示程序:

import java.awt.*;

public class FrameDemo extends Frame {

    public FrameDemo(){
        super("Frame Demo");
        setSize(200, 200);
        setVisible(true);
    }

    public static void main(String args[]){
        new FrameDemo();    
    }
}

它編譯成功。 但是當我嘗試執行該程序時,我發現了以下錯誤:

Exception in thread "main" 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 FrameDemo.<init>(FrameDemo.java:4)
    at FrameDemo.main(FrameDemo.java:9)

我正在使用 Xubuntu 10.10 和java -version給出:

java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1)
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing)

我該怎么辦?

還有一件事:這與我嘗試執行 Dr. Java 和 HJSplit 的 jar 文件時遇到的錯誤類型相同。

Ubuntu 可以選擇安裝無頭 Java——這意味着沒有圖形庫。 情況並非總是如此,但前幾天我在 10.10 上嘗試運行 Java 文本編輯器時遇到了這個問題。 運行以下命令以安裝具有這些庫的 JDK:

sudo apt-get install openjdk-6-jdk

編輯:實際上,查看我的配置,您可能需要 JRE。 如果是這種情況,請運行:

sudo apt-get install openjdk-6-jre

當我使用apt安裝default-jdk時,我不再收到此異常。 我正在運行 Ubuntu 14.04 (Trusty Tahr),問題似乎是安裝了“無頭”Java 的結果。 我所做的只是:

sudo apt-get install default-jdk

就我而言

-Djava.awt.headless=true

已設置(由Maven配置間接設置)。 我不得不積極使用

-Djava.awt.headless=false

覆蓋這個。

我的 Ubuntu 機器上也有OpenJDK

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

用 HotSpot VM 替換 OpenJDK 工作正常:

sudo apt-get autoremove openjdk-7-jre-headless

如何在 Ubuntu (Linux) 上安裝 JDK

使用“env”命令檢查您的 X Window 環境變量。

使用 JFrame 而不是 Frame。 並且不要從 JFrame 擴展。 只需編寫一個具有名為gui的 JFrame 屬性的類,該類使用可用方法配置此 JFrame,因為這樣做更好。 在這里擴展是錯誤的使用 OOP。

檢查您的環境變量 DISPLAY 的值是什么。 嘗試從命令行運行一個簡單的 X 應用程序。 如果有效,請檢查 DISPLAY 的值以獲得正確的值。

您可以通過在命令行上執行以下操作,在每次調用的基礎上試驗不同的 和 環境變量值:

DISPLAY=:0.0 <your-java-executable-here>

你怎么稱呼你的程序?

我會檢查另一個 Java 實現/供應商。 最好是 Oracle/Sun Java: http : //www.java.com/en/ 不幸的是,開源實現在奇怪的方面有所不同。

這個命令對我有用。

Sudo dnf install java-1.8.0-openjdk (Fedora)

Sudo apt-get install java-1.8.0-openjdk

應該適用於 Ubuntu。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM