我有一個Main.java
文件,我想運行的程序傳遞給它的test.txt製作一個「宏」命令來運行程序
我知道在命令行我可以寫的javac Main.java
編譯之後我可以寫java Main test.txt
,這將完成運行該文件,並通過test.txt
如果我想反而能夠只寫main test.txt
和有觸發我Main.class
文件來運行是可能的,如果是的話怎麼辦?
我有一個Main.java
文件,我想運行的程序傳遞給它的test.txt製作一個「宏」命令來運行程序
我知道在命令行我可以寫的javac Main.java
編譯之後我可以寫java Main test.txt
,這將完成運行該文件,並通過test.txt
如果我想反而能夠只寫main test.txt
和有觸發我Main.class
文件來運行是可能的,如果是的話怎麼辦?
(編輯:基於您的評論,讓我擴大添加情侶更多情況)
如果您的目標是讓其他人運行未安裝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」,必要時使用完整路徑(如果路徑尚未設置)。當然,這不會使參數在每次運行時都很容易更改,您將不得不編輯快捷方式。
可以擴展嗎?我應該澄清我需要能夠讓其他人使用main運行我的程序(插入文件他們關心在這裏嘗試) – brucebomber
我不喜歡使用shell代碼,在您提出的解決方案中有什麼困難嗎? – brucebomber
取決於您的操作系統。例如,在帶有bash shell的Linux上,您可以設置一個alias將main
擴展爲java -cp myjar.jar main
。
Linux也可以配置爲'理解'Java類以二進制格式直接參見here(linux內核文檔)。
如果您使用的是Windows,你有關於更多的知識,以等待別人的答案比我
祝你好運!
另請參閱[this](http://stackoverflow.com/questions/1667830/running-a-jar-file-without-directly-calling-java),它指向相同的解決方案。 – Faelkle
你可以在windows下創建'java.exe'傳遞命令行參數的捷徑。你只需要確保啓動環境指向正確的目錄 – MadProgrammer
是的。對於linux/cygwin:OP還應該檢出Groovy shell腳本;他們可以以類似於普通shell腳本的方式運行java(+ Groovy)代碼。參考:[使用Groovy創建Unix腳本](http://groovy.codehaus.org/Running)。 – Faelkle
添加別名 例如,一個MAC編輯下與以下行你的.bash_profile
alias main='java main'
不要忘了打開新的控制檯,看看你的別名工作
你沒有做錯任何事。 :)很酷的問題。不過,這可能與操作系統特定的東西有關,而不是Java,因爲您可能必須對這些行進行一些shell修改或其他操作。 – asteri