2012-09-21 53 views
5

我有一個Main.java文件,我想運行的程序傳遞給它的test.txt製作一個「宏」命令來運行程序

我知道在命令行我可以寫的javac Main.java

編譯之後我可以寫java Main test.txt,這將完成運行該文件,並通過test.txt

如果我想反而能夠只寫main test.txt和有觸發我Main.class文件來運行是可能的,如果是的話怎麼辦?

+0

你沒有做錯任何事。 :)很酷的問題。不過,這可能與操作系統特定的東西有關,而不是Java,因爲您可能必須對這些行進行一些shell修改或其他操作。 – asteri

回答

1

(編輯:基於您的評論,讓我擴大添加情侶更多情況)

如果您的目標是讓其他人運行未安裝Java的程序,並且您不希望讓他們在運行應用程序之前安裝Java運行時環境,那麼您需要的是程序將.class或.jar文件轉換爲您正在使用的平臺的本機可執行文件。其他問題已涵蓋如何執行此操作,例如:Compiling a java program into an executable。實質上,您使用像JCG(GNU Compiler for Java)或Excelsior JET(商業產品)這樣的程序將字節碼擴展爲帶有內置mini-JRE的完整本地代碼。

如果您的目標是保存輸入,有許多策略。其他人提出了別名命令,這些命令在Linux上運行良好。

一個稍微更加便攜的選項,你可以隨程序一起提供,就是一個shell腳本。當然,shell腳本只能在安裝了shell腳本解釋器的linux或其他操作系統上運行。

這裏是一個shell腳本的例子。將其粘貼到文本編輯器中,並將其保存爲不帶擴展名的主文件。 $ 1傳遞參數參數fyi。

#!/bin/sh 
java Main $1 

假設你的名字沒有擴展你的shell腳本只是「主」,你可以調用main test.txt現在執行程序。

如果您在Windows上,您可能需要創建一個Windows快捷方式,並將快捷方式指向「java Main test.text」,必要時使用完整路徑(如果路徑尚未設置)。當然,這不會使參數在每次運行時都很容易更改,您將不得不編輯快捷方式。

+0

可以擴展嗎?我應該澄清我需要能夠讓其他人使用main運行我的程序(插入文件他們關心在這裏嘗試) – brucebomber

+0

我不喜歡使用shell代碼,在您提出的解決方案中有什麼困難嗎? – brucebomber

0

取決於您的操作系統。例如,在帶有bash shell的Linux上,您可以設置一個aliasmain擴展爲java -cp myjar.jar main

Linux也可以配置爲'理解'Java類以二進制格式直接參見here(linux內核文檔)。

如果您使用的是Windows,你有關於更多的知識,以等待別人的答案比我

祝你好運!

+0

另請參閱[this](http://stackoverflow.com/questions/1667830/running-a-jar-file-without-directly-calling-java),它指向相同的解決方案。 – Faelkle

+1

你可以在windows下創建'java.exe'傳遞命令行參數的捷徑。你只需要確保啓動環境指向正確的目錄 – MadProgrammer

+0

是的。對於linux/cygwin:OP還應該檢出Groovy shell腳本;他們可以以類似於普通shell腳本的方式運行java(+ Groovy)代碼。參考:[使用Groovy創建Unix腳本](http://groovy.codehaus.org/Running)。 – Faelkle

1

添加別名 例如,一個MAC編輯下與以下行你的.bash_profile

alias main='java main' 

不要忘了打開新的控制檯,看看你的別名工作