簡體   English   中英

在沒有命令提示符的情況下在Windows上運行JAVA 8 jar

[英]Run JAVA 8 jar on windows without command prompt

這是一個簡單的Hello World測試應用程序。

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        try {
            System.in.read();
        } catch (IOException e) {
            System.out.println("IOException : "+e.getMessage());
        }
    }
}

它在Eclipse中導出為“Runnable JAR File”。 在此輸入圖像描述

在命令提示符下使用java -jar hello.jar打開它。

但是,當嘗試使用雙擊打開它時,沒有任何反應。

注1:Java Platform是與此類型關聯的默認程序。

在此輸入圖像描述

注2: java -version

java版“1.8.0_60”

Java(TM)SE運行時環境(build1.8.0_60-b27)

Java HotSpot(TM)64位服務器VM(內置25.60-b23,混合模式)

問題雙擊不執行命令行JAVA 8 jar文件。 我怎么解決呢?

如果雙擊*.jar它實際上是以javaw -jar Hello.jar開頭的。 java.exejavaw.exe之間的區別在於javaw沒有關聯的控制台窗口。 由於您的測試應用程序未顯示任何GUI元素,因此它看起來像是不會被執行。

根據您要實現的目標,您可以創建一個腳本來運行您的應用程序,也可以創建一些圖形界面。

從文件資源管理器執行JAR時,沒有shell可以將文本輸出寫入。 當您從命令行運行它時,它已經包裝在shell中,因此System.out流已經設置為shell的輸出流,因此print語句是可見的。

最簡單的實際解決方案是創建一個執行java -jar hello.jar命令的批處理文件,該命令將在文件資源管理器中打開命令窗口時啟動它。

另一種解決方案是使用Runtime.exec()從Java應用程序中啟動cmd.exe上下文,並將輸出流設置為與它返回的進程對象相同。

最優雅的解決方案,但需要更多后台工作的解決方案,是在JScrollPane中實例化一個由JFrameJTextArea組成的簡單GUI,然后將輸出附加到文本區域。

您的jar可能正在使用javaw.exe打開。 您可以通過執行命令來驗證

ftype | find "jarfile"

如果它顯示為javaw.exe

ftype jarfile="C:\Program Files\Java\jdk1.8.0_45\jre\bin\javaw.exe" -jar "%1" %*

將其更改為java.exe

ftype jarfile="C:\Program Files\Java\jdk1.8.0_45\jre\bin\java.exe" -jar "%1" %*

我試過,它對我有用。

暫無
暫無

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

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