簡體   English   中英

Java - 如何通過雙擊jar文件來輸入(main方法的)運行時參數?

[英]Java - How to enter runtime arguments (of main method) by double-clicking a jar file?

我好幾次遇到這個問題。 如果我將Java應用程序打包在一個可接受用戶參數的可執行jar文件中,那么用戶必須通過以下命令從命令提示符調用該程序(jar文件):

java -jar "jar-file-name.jar"

但是我希望每當用戶雙擊可執行jar文件(需要來自用戶的參數)時,如果我們從命令提示符調用了jar文件,就會出現一個窗口(命令提示符窗口)。

我知道一個解決方案是使用批處理文件.bat來運行jar文件。 還有其他解決方案嗎?

解釋原因:

有2個java JVM exe發射器:

  • java.exe:基於控制台 - 提供控制台輸入/輸出。
  • javaw.exe:用於GUI應用程序 - 隱藏控制台。

默認情況下,JAR文件擴展名與javaw.exe相關聯,這就是雙擊時無法獲得控制台的原因。

其他人給出的答案,並添加了我自己的答案:

  • 重寫您的應用程序,以便它使用Java GUI項進行輸入和輸出而不是System.in/System.out。 根據您的需要,這可能過於復雜。

  • 您提到創建批處理文件以便運行基於控制台的Java JVM(java.exe),您還可以創建指定命令行的Windows快捷方式: java -jar jar-file-name.jar

  • 您可以更改.jar的Windows文件關聯(但通常這是一個壞主意 - 新的Java安裝可能會重置此設置,這將意味着從jar運行的所有Java應用程序都將具有控制台)

  • 您可以使用像WinRun4J這樣的Java啟動程序 ,它允許您簡單地刪除帶有圖標和配置文件的雙擊EXE,該文件指定應如何運行應用程序(使用/不使用控制台,以及使用任何其他JVM和命令行參數)

我親自去了項目的最后一個選項 - 我的jar文件不可執行,用戶必須雙擊EXE。 它還允許我為我的項目指定一個漂亮的圖標,並通過使用不同的exe / config文件提供啟動(調試/非調試模式)的多個選項。

您需要將“.jar”的資源管理器關聯重新分配給java.exe而不是javaw.exe。 這有點值得懷疑 - 創建控制台輸出窗口可能更有意義。 當然,如果命令行上沒有提供所需執行參數的用戶輸入,您可以輕松彈出一個對話框。

有一個控制台輸出的JTextArea工作的代碼在這里

這是一個操作系統功能。

如果您想要完全控制,那么您必須在程序內部(或使用包裝類)提供此功能。

暫無
暫無

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

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