1. java後台啟動本地exe程序如何傳遞參數到exe程序並接收
List<String> commands = new ArrayList();
commands.add("a.exe");
commands.add("abc");
ProcessBuilder pb = new ProcessBuilder();
pb.command(commands);
Process pr = pb.start();
2. java 命令行 傳遞參數
不要在Java中處理「<」(重定向)符號,那是留給操作系統來處理的。
要想將將輸入從定向文件傳遞給Java程序,可採用如下辦法。
(1)首先製作批文件(Windows下為.bat文件,Linux/UNIX下為.sh文件)。給你作個例子(以Windows為例,製作一個名稱為start.bat的文件):
@set/p A= >nul
@set/p B= >nul
@set/p C= >nul
@set/p D= >nul
@java 您的java啟動類名 %A% %B% %C% %D%
@set/p A= <nul
@set/p B= <nul
@set/p C= <nul
@set/p D= <nul
這里只有四個參數,您可以添加更多的參數。
之後編寫輸入重定向文件(in.txt),內容範例如下:
para1Value
para2Value
para3Value
...
在執行的時候,使用格式如下:
start.bat < in.txt
這時,您的Java啟動類.main才能接收到從定向文件里的參數。
建議在批文件中可以多設一些參數,即使輸入重定向文件內提供的參數值數量不足也沒有關系,操作系統不會傳遞沒無值參數。
3. java怎樣打包後能成為帶參數的exe
有兩種比較易用的方法:
關於兩種將Java程序轉化為.exe程序工具的使用及比較
一 JSmooth
1.出品
Jsmooth,Sourceforge.net
2. 類型
free
3. 下載
http://jsmooth.sourceforge.net/download.php
4. 步驟
a)利用Eclipse將所需要的主類打成可獨立運行的jar包,注意添加manifest屬性和MainClass。
b)新建一個Jsmooth工程
c) 在sketlon中選擇「Console「 或者 「Windowed「
d) 在Executable中的配置:
i. Executable Binary:填寫目的輸出源的名稱。如test.exe.
ii. Executable Icon :選擇一個好看點的圖標
iii. Current Driectory :.(表示當前工程目錄,當然也可行換成別的,As you wish.)
e) 在Application中的配置:
i. Classpath:選中我們所生成的jar包以及運行該jar文件所需要的類庫
ii. Main-Class:選中我們所需要運行的主類。
iii. 可選項Use an embedded jar:運行該exe時可能需要到的類庫(這里只能有一個類庫)。
f) 在JVM Selection中的配置:
i. Minimum JVM Version:寫一個需要運行該程序所需的最低的就JVM的版本,比如1.4
g) Compile:OK,編譯成功後,在你的輸出目錄上就會有一個嶄新的exe程序了。Just enjoy it.
二 exe4J
1. 出品
ej-technologies
2.類型
Shared software,needs license
3.下載
http://www.ej-technologies.com/download/exe4j/files.php
4. 步驟
a) 利用Eclipse將所需要的主類打成可獨立運行的jar包,注意添加manifest屬性和MainClass。
b) 新建一個exe4j工程
c) 選擇「JAR in exe「 mode
d) 在Configure application中的配置:
i. Short name:隨便寫.
ii. Ourput Driectory :選擇輸出路徑。
e) 在Configure Executable中的配置:
i. Executable type: 有三個選項,圖形,控制台.或服務。從簡單點開始吧,這里我們選console
ii. Executable name:填寫目的輸出源的名稱。如test.exe
iii. Icon file:exe圖標文件,但必須是.ico文件
f) 在Configure Java invocation中的配置:
i. Classpath:選中我們所生成的jar包以及運行該jar文件所需要的類庫
ii. Main-Class:選中我們所需要運行的主類。
iii.Arguments(可選項):輸入參數。我們這里暫不需要。
g)在Configure JRE中的配置:
i. Minimum Version:寫一個需要運行該程序所需的最低的就JVM的版本,比如1.4
h) 一直next,對於所遇到的步驟選項都默認,直到finish:OK。編譯成功後,在你的輸出目錄上就會有一個嶄新的exe程序了。Just enjoy it.
三 總結和比較
由Java生成exe的工具還有很多,上面兩種是我個人覺得用起來覺得比較方便的。兩者的原理基本相同,但具體用起來還是有一點點不太一樣的:
1.相同點
a) 最大的相同點當然是他們原理是互通的。都是通過將可運行的java程序打成可執行的jar包。再作轉換。
b) 所生成的exe可執行程序,需要在裝有比minimum version高的JVM環境下運行。
2. 不同點
a) 生成exe的時候,如果想要exe只需要pure JVM的環境(不需要第三方的類庫)就可以運行的話。在JSmooth需要將所有的用到的第三方類庫壓縮成一個jar包(因為它有個embeded jar的選項),這就比較麻煩,因為當需要的jar多於一個時候,就需要將這些jar包先用jar –xvf 解壓縮,在用jar –cvf重新製作新的jar文件,再放到embeded jar選項中去;而exe4J則會把classppath中所用到的jar包也會編譯到exe中去。
b) JSmooth是免費的;而exe4J是共享軟體,需要注冊,否則在執行exe的時候會彈出很惹人煩的提示框。
c)ico文件的選擇:exe4J要求嚴格的ico文件,而JSmooth則可以兼容jpg等其他各式的圖片。
參考資料:http://zicozhang.spaces.live.com
4. java 調用exe 怎麼傳遞參數
public class Test {
public static void main(String[] args) throws IOException {
try {
// String[] cmds = {"cmd.exe","/c"," dir","c:",">","d://aa.txt"};
// Process pro = Runtime.getRuntime().exec(cmds);
Process pro = Runtime.getRuntime().exec("cmd.exe /c dir c: > d://aa.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream(),"GBK"));
String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
} catch (IOException exception) {
}
}
}
執行完成之後 會在d://下面生成一個aa.txt文件 裡面保存了 dir的結果 其中 > 是 重定向 意思是講執行結果從定向到 d://aa.txt
5. java 中 如何通過命令行來傳遞參數
可以在命令行運行java程序時加上程序的參數。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp=" + args[0]);
}
}
源代碼截圖:
解釋一下: String[ ] args
該參數,是一個字元串數組,用來接收從命令行輸入的參數
1. 參數之間用空格隔開
2. java解釋器會自動處理,把用空格隔開的每一個參數通過args數組傳遞給買呢()方法。
3. 參數的下標從0開始,args[0]表示第一個參數,例如java HelloWorld 10 20 30
4.可以有多個空格,多個空格會被忽略。
(5)java給exe傳參數擴展閱讀:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等 。
6. 怎樣在java類中調用帶參數的可執行文件(比如:.exe,.sh等等)
比如調用exe程序"java -version":
String[] cmd = new String[] {"java", "-version"};
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader r = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String l = null;
while((l = r.readLine()) != null) {
System.out.println(l);
}
Process有兩個流可以讀取外部程序的標准輸出(就是運行結果啦),一個是getInputStream,一個是getErrorStream。
如果要調用C或C++動態鏈接庫中的函數的話,就要復雜一些,要用到JNI了。
7. java 調用exe 需要給exe傳參數
public class Test {
public static void main(String[] args) throws IOException {
try {
// String[] cmds = {"cmd.exe","/c"," dir","c:",">","d://aa.txt"};
// Process pro = Runtime.getRuntime().exec(cmds);
Process pro = Runtime.getRuntime().exec("cmd.exe /c dir c: > d://aa.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream(),"GBK"));
String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
} catch (IOException exception) {
}
}
}
執行完成之後 會在d://下面生成一個aa.txt文件 裡面保存了 dir的結果 其中 > 是 重定向 意思是講執行結果從定向到 d://aa.txt
希望對你有幫助
8. 請問在JAVA中,用命令行傳遞參數是什麼意思
在你配好JDK環境變數的前提下
在命令提示符中(cmd.exe)輸入,java ClassName parameter
這就是在編譯時象ClassName文件傳遞參數的方式,parameter為參數實體,可以用空格來傳遞多個參數,該參數會傳遞到public static void main(String[] args)中的args數組中