2014-01-28 74 views
1

我正在編寫一個適用於所有流行平臺(Windows,Mac & Linux)的命令行工具。我正在考慮編寫它在golang,因爲它可以生成靜態編譯的二進制文件,並在上述所有平臺上工作。在我做出決定之前,我需要評估Java,看看它是否可以做到這一點。如何在Java中創建命令行應用程序?

我想知道是否有可能在Java中創建一流的命令行程序?據我所知,Java程序需要像

java -cp classpath MyApp 

要開始現在我需要這種包裝在一個shell腳本來改善體驗。喜歡的東西,

#!/bin/sh 
java -cp classpath MyApp [email protected] 

現在,用戶可以這樣做:

myapp --arg1 value --arg2 value 

問題是這樣的做法是不是跨平臺。在Windows上,我需要編寫一個批處理文件來執行此操作。

我不確定這是否是在Java中正確的做法。有沒有更好的方法來處理這個問題?

+0

相關:http://stackoverflow.com/questions/2288440/how-to-create-a-java-application-which-can-be-run-by-a-click – jacquard

+0

http://stackoverflow.com/questions/147181/how-can-i-convert-my-java-program-to-an-exe-file – Mikhail

回答

2

您發佈的解決方案(調用java的平臺特定腳本文件)確實是最容易實現的最快解決方案。如果那不足以滿足您的需求,那麼有幾種解決方案提供更好的可用性:

  1. executable jar files。基本上通過在MANIFEST.MF條目中聲明你的主類,通過雙擊某些平臺(絕對的Windows,其餘的不是確定的),文件變得可執行。請注意,這需要在機器上正確安裝JRE。
  2. 服務包裝。有第三方產品會將您的Java應用程序封裝在本地可執行文件中,並允許您的應用程序「感覺」像本機應用程序。最常用的一種是tanuki service wrapper但還有其他一些(launch4j是一個開源替代品,適合您所需的操作系統設置)

編輯 - 在相關的更多選項,讓質疑here

1

若要有了命令行參數,你可以使用Apache CLI。它解析參數並打印它們的列表,如果有一些丟失的話。在java項目中,在bin文件夾中都有*.bat*.sh文件都可以。這種方法讓你感到困惑?以Ant或Maven項目爲例。

0

我可能會建議使用Maven,它有一個很容易開發的名爲「maven spring shell」的概念。你確實需要爲windows和linux編寫.bat和.sh,但它更像是一種配置類型。會更容易打包。 以下鏈接將幫助您 developing spring shell applications

相關問題