2013-07-20 30 views
1

我在我的Linux系統上創建了一個java程序,它壓縮和格式化給定的文件。我想讓這個程序像Linux中的命令一樣工作,它將文件名和其他選項作爲參數,然後生成輸出。我可以用C程序by just copying the compiled executable in /bin folder來做到這一點,但我不知道如何用java來做到這一點。將一個java程序轉換成一個linux命令

+0

您創建了一個程序來縮進和格式化文件。那很好。你可能會很高興知道有一個名爲'indent'的程序已經爲你做了這個。 – devnull

+3

使用Java,您可以編寫一個在您的Jar上調用Java的小型shell腳本,並傳遞一些傳遞給shell腳本的參數。 – dasblinkenlight

+0

http://www.gnu.org/software/indent/ – devnull

回答

1

能可能會進一步幫助 -

#!/bin/bash 

#Set whatever number of arguments you expect for the Java jar you have 
ARGS_EXPECTED=3 

if [ $# -ne $ARGS_EXPECTED ] 
then 
    echo "[$HOSTNAME]: Usage: `basename $0` filename arg1 arg2" 
    exit 1 
fi 

java -cp yourfile.jar com.yourpkg.Driver $1 $2 $3 

保存上述內容到一個文件,示例腳本說test.sh 並使用命令給可執行權限chmod +x test.sh

從當前目錄運行,如./test.sh filename arg1 arg2,其中test.sh爲

0

您可以簡單地運行一個Java類文件或jar文件與命令行的「java」命令。例如:

Java的罐子yourprogram.jar參數1參數2

如果您保存這條線在保存例如,作爲「script.sh」,然後一個文本文件給它來執行,你可以運行它雙擊許可或者在終端在包含script.sh文件的相同文件夾中輸入./script.sh。

您還可以生成使用$ 1 $ 2等參數的腳本,避免編輯文件。 http://www.linuxquestions.org/questions/linux-newbie-8/how-to-pass-command-line-parameter-to-shell-script-254396/ 也可以使用命名參數。

你也可以爲你的一個新命令生成一個C程序,就像你建議運行「java」命令一樣。在這種情況下,您可以直接從終端引入參數,並將它們傳遞給C源代碼中的java命令。

+0

看起來使用.class文件作爲命令並不像C程序可執行那麼簡單..但無論如何感謝Ufo.rob的幫助! – Nullpointer

+0

您需要在'.jar'中正確打包應用程序才能正常工作;這似乎是一個額外的描述,做他的完整性將是必要的。 –

0

正如其他人指出的,最好使用小型shell腳本來運行Java應用程序。有幾個開源產品可以幫助您打包Java代碼,以生成可運行(一組).jar(s)。

如果您已將業務邏輯與接口正確分開(如果您應該這樣做),那麼如果您的Java應用程序解析命令行界面上給出的參數,這可能是最好的。爲此,創建一個單獨的類來解析這些參數並調用組成業務邏輯的類。當然,如果不是立即這樣做的話,它會很快爲Linux等編寫一個解析器,例如CLI參數。發生這種情況時,您可能需要考慮Apache Commons CLI project

如果你不希望使用任何包裝應用/運行時,我的方法一般是指向在類路徑中的所有類文件的容器和直接指向類包含靜態main方法:

java -cp "path_to_jar;path_to_class_folder;etc" "nl.owlstead.stackoverflow.LinuxMain" 
相關問題