簡體   English   中英

在沒有 GUI 的情況下運行 .jar 文件

[英]Running a .jar file without a GUI

我為我正在處理的項目制作了這個小程序,當我從 Eclipse 運行時,它可以正常工作。 我想做的是有一個 .jar 文件,我可以雙擊它並讓它在我的控制台中運行。 我已經在導出菜單上導出為 JAR 和可運行 JAR,並且兩次在任務管理器中啟動 Java 進程,它都使用 CPU 和內存,但我的屏幕上沒有顯示任何內容。 我嘗試使用命令提示符進行編譯,結果是一樣的。 所以,我的問題是,我可以有一個沒有 GUI 的獨立 java 應用程序嗎? 因為這似乎是我的問題:我按照教程制作了一個程序,它工作得很好。

我正在使用 Windows 8 64 位(因為我必須在我的項目中使用其他一些軟件,所以我必須這樣做)。 我是這個 Java 業務的新手,所以如果可以的話,請盡可能簡單; 我真的很感激。 提前致謝。

import java.util.Scanner;
public class Distancia {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int check = 1;
    System.out.println("Kilómetros a Millas Náuticas\n");
    do {
        int cm = 0;
        int salida = 0;
        while (salida != 1){
        try {
            System.out.println("Escriba la distancia en kilómetros:");
            cm = sc.nextInt();
            salida = 1;
        } catch (Exception e) {
            System.out.println("Opción Inválida");
            sc = new Scanner(System.in);
            sc.reset();
        }
        } //Fin del While
    //Conversiones de distancias
    int km = cm*50;     // Conversión de Centimetros-mapa a Kilómetros
    double mn = km/(1.8);   // Conversión a Millas Náuticas
    //Cálculos de Velocidades
    System.out.println("Distancia en kilómetros: "+km+" km.");
    System.out.println("Distancia en millas náuticas: "+mn+" MN.\n");
    if (mn/5<24)
        System.out.println("Tiempo a 05 nudos: "+mn/5+" horas.");
    else{
        System.out.println("Tiempo a 05 nudos: "+mn/5+" horas.");
        System.out.println("Tiempo a 05 nudos: "+(mn/5)/24+" días.");
        System.out.println();
    }
    if (mn/8<24)
        System.out.println("Tiempo a 08 nudos: "+mn/8+" horas.");
    else{
        System.out.println("Tiempo a 08 nudos: "+mn/8+" horas.");
        System.out.println("Tiempo a 08 nudos: "+(mn/8)/24+" días.");
        System.out.println();
    }
    if (mn/12<24){
        System.out.println("Tiempo a 12 nudos: "+mn/12+" horas.");
        System.out.println();
    }
    else{
        System.out.println("Tiempo a 12 nudos: "+mn/12+" horas.");
        System.out.println("Tiempo a 12 nudos: "+(mn/12)/24+" días.");
        System.out.println();
    }
    }
    while (check !=0);
    sc.close();
    }
}

我同意@lewis4u 提到的內容。盡管他的回答需要對初學者進行一些澄清。 由於初學者嘗試實現的第一個 java 應用程序在大多數情況下將是一個無 GUI 應用程序。 要創建一個雙擊運行的 Java 無 GUI 控制台程序(按照以下步驟操作):

  1. 編寫您的 java 代碼並確保使用 (.java) 擴展名保存文件。
  2. 轉到cmd並編寫以下命令:

(cd theDirectoryWhereTheJavaFileIsFound),然后 ENTER

(javac 文件名.java),然后 ENTER

此過程用於將 java 文件編譯為類文件。

  1. 在同一文件夾中創建一個新的文本文件,並在其中寫入:

(java 文件名) 然后 ENTER

(暫停)

然后保存文件,並將其擴展名從 (.txt) 更改為 (.bat)。

完成以上步驟后,大功告成!

當您雙擊您創建的 (.bat) 文件時,這將啟動一個控制台應用程序,您可以在其中輸入/輸出。

當然可以。
您需要做的就是讓它由 Java 虛擬機運行。
那是

java -jar "\path\to\YOUR_JAR_NAME.jar" 

但是,通過雙擊運行它不起作用。
但是,如果您使用 C# 而不是 Java,它會生成一個可愛的 .exe,您可以通過雙擊運行它。

或者如果你堅持使用Java,你可以使用Launch4j:
http://launch4j.sourceforge.net/

如果問題是,它需要一個 GUI,您可以執行AttachConsole WinAPI 調用,以顯示命令行窗口。

windows 處理雙擊 jar 文件的方式是啟動javaw ,該 javaw 旨在運行 Java GUI 程序而不顯示控制台窗口。 當我雙擊一個 Java 控制台應用程序時,我會在控制台窗口中看到類似這樣的內容:

javaw -jar "C:\JavaPrograms\SampleConsoleApp\dist\DistanceCalc.jar"

因為 javaw 設計用於啟動 GUI 窗口,所以沒有顯示任何其他內容,但沒有顯示。

如果您想創建一個通過雙擊啟動的控制台應用程序,請創建一個名為launcher.bat的文本文件並將啟動命令放在該批處理文件中:

java -jar "C:\JavaPrograms\SampleConsoleApp\dist\DistanceCalc.jar"

當您從 IDE 運行程序時,Netbeans 實際上會為您生成此命令行,方法是在輸出窗口中顯示如下內容:

To run this application from the command line without Ant, try:
java -jar "F:\JavaPrograms\IndexMaker\dist\IndexMaker.jar"
  1. 打開任何文本編輯器
  2. 寫下這兩行:

     java "yourmainclassname" pause
  3. 將該文件另存為“名稱”.bat

  4. 從 Windows GUI 雙擊運行它

(當然,這個新創建的 .bat 文件必須與 .class 位於同一文件夾中)

暫無
暫無

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

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