當前位置:首頁 » 編程語言 » java執行linux

java執行linux

發布時間: 2022-08-10 16:38:17

1. java如何執行linux腳本文件

1)在linux下寫一個.sh文件

(2)文件內容如下:

復制代碼
代碼如下:
#!/bin/sh
//bash文件頭
APP_HOME=/home/blmcrm/crm/A
//要執行的java文件中bin文件的上一個目錄,我的目錄是/home/blmcrm/crm/A/bin/blm......(後面不寫了),總之就是寫bin目錄前面的部分,因為jar包在bin目錄裡面,如果不在bin裡面,也如此改一下就行
CLASSPATH=$APP_HOME/bin
//bin目錄當然是包含jar包的目錄啦
for i in "$APP_HOME"/bin/*.jar
//引進所有的jar包,這里用的循環,當然也可以按照這個格式一個一個 寫
do

CLASSPATH="$CLASSPATH":"$i" //環境變數就這格式
done
export
CLASSPATH=.:$CLASSPATH //不寫這個可能會說找不到main類
echo
${CLASSPATH} //列印環境變數,可以不寫
java -Xms50m -Xmx250m
org.gdh.blm.exec.Syslog_csv
exit(結束) //執行java程序, 其中-Xms50m
-Xmx250m是運行內存什麼的設置,後面的是bin目錄以後一直到.class的路徑,我的是Syslog_csv.class,所以我最後那個是Syslog_csv。

2. 在linux系統中怎麼執行一個java程序

在linux下使用命令行編譯java文件

在linux下使用命令行編譯java文件
1: 只是獨立的一個java文件
編譯生成test.class文件 : javac test.java
運行: java test

2: 在這個特定包中的一個java文件
編譯生成*.class文件:javac packageName.* (此命令必須是在該文件包所在的路徑,而不是文件所在的路徑)
運行: java packageName.* (同上)

3: 運行時需要某個*.jar文件的支持,如連接DB需要相應的JDBC驅動
編譯生成*.class文件 :不同情況與上1,2點相同
運行時:java -cp .:../lib/mysql.jar packageName.* (其中mysql.jar就是DB的JDBC驅動)

3. java程序里如何調用linux命令

Java 可以通過 Runtime 調用Linux命令,形式如下:

  1. Runtime.getRuntime().exec(command)

    但是這樣執行時沒有任何輸出,因為調用 Runtime.exec 方法將產生一個本地的進程,並返回一個Process子類的實例(注意:Runtime.getRuntime().exec(command)返回的是一個Process類的實例)該實例可用於控制進程或取得進程的相關信息。

  2. 由於調用 Runtime.exec 方法所創建的子進程沒有自己的終端或控制台,因此該子進程的標准IO(如stdin,stdou,stderr)都通過 Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream() 方法重定向給它的父進程了。

  3. 用戶需要用這些stream來向子進程輸入數據或獲取子進程的輸出,下面的代碼可以取到 linux 命令的執行結果:

    try {

    String[] cmd = new String[]{」/bin/sh」, 「-c」, 」 ls 「};

    Process ps = Runtime.getRuntime().exec(cmd);

    BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));

    StringBuffer sb = new StringBuffer();

    String line;

    while ((line = br.readLine()) != null) {

    sb.append(line).append(」 」);

    }

    String result = sb.toString();

    System.out.println(result);

    } catch (Exception e) {

    e.printStackTrace();

    }

4. java怎麼執行linux互動式命令

Process prc = runtime.exec(.....); prc.waitFor();//這行就能阻塞後續代碼的執行,直到你執行的命令結束。

5. java能在linux系統下執行嗎

java程序是一次編寫,處處運行的.但實際情況是一次編寫,處處編譯.

使用Java語言編寫應用程序最大的優點在於「一次編譯,處處運行」,然而這並不是說所有的Java程序都具有跨平台的特性,事實上,相當一部分的Java程序是不能在別的操作系統上正確運行的.
下面是在編寫跨平台的Java程序是需要注意的一些事情:
1.編寫Java跨平台應用程序時,你可以選擇JDK1.0,1.1,1.2或支持它們的GUI開發工具如:Jbuilder,Visual Age for Java 等等,但是必須注意你的Java程序只能使用Java核心API包,如果要使用第三方的類庫包,則該類庫包也要由Java核心包開發完成,否則在發布你的程序的時候還得將支持該Java類庫包的JVM發布出去。也就是說,你的程序需要是100%純Java的。舉一個例子,Visual J++ 就不是純Java的,由Visual J++編寫的程序也就不具有平台無關性。
2. 無論你使用的是JDK或其他開發工具,在編譯時都要打開所有的警告選項,這樣編譯器可以盡可能多的發現平台相關的語句,並給出警告。雖然不能保證沒有編譯時警告錯誤的程序一定是跨平台的,但含有警告錯誤的程序卻很有可能是非平台無關的。
3. 在程序中使用任何一個方法的時候,要詳細察看文檔,確保你使用的方法不是在文檔中已經申明為過時的方法(Deprecated method),也不是文檔中未標明的隱含方法(Undocumented method)。

6. 如何在java程序中調用linux命令或者shell腳本

在java程序中如何調用linux的命令?如何調用shell腳本呢?

這里不得不提到java的process類了。

process這個類是一個抽象類,封裝了一個進程(你在調用linux的命令或者shell腳本就是為了執行一個在linux下執行的程序,所以應該使用process類)。

process類提供了執行從進程輸入,執行輸出到進程,等待進程完成,檢查進程的推出狀態,以及shut down掉進程。

至於詳細的process類的介紹放在以後介紹。

另外還要注意一個類:Runtime類,Runtime類是一個與JVM運行時環境有關的類,這個類是Singleton的。

這里用到的Runtime.getRuntime()方法是取得當前JVM的運行環境,也是java中唯一可以得到運行環境的方法。(另外,Runtime的大部分方法都是實例方法,也就是說每次運行調用的時候都需要調用到getRuntime方法)

下面說說Runtime的exec()方法,這里要注意的有一點,就是public Process exec(String [] cmdArray, String [] envp);這個方法中cmdArray是一個執行的命令和參數的字元串數組,數組的第一個元素是要執行的命令往後依次都是命令的參數,envp感覺應該和C中的execve中的環境變數是一樣的,envp中使用的是name=value的方式。

下面說一下,如何使用process來調用shell腳本

例如,我需要在linux下實行linux命令:sh test.sh,下面就是執行test.sh命令的方法:

這個var參數就是日期這個201102包的名字。

String shpath="/test/test.sh"; //程序路徑

Process process =null;

String command1 = 「chmod 777 」 + shpath;
process = Runtime.getRuntime().exec(command1);
process.waitFor();

String var="201102"; //參數

String command2 = 「/bin/sh 」 + shpath + 」 」 + var;
Runtime.getRuntime().exec(command2).waitFor();

注意:

1

我為什麼要使用 chmod 777命令呢?在有的機器上面,可能沒有設置許可權問題。這是你在linux下面執行shell腳本需要注意的問題。沒有的話,就需要添加許可權,就用chmod 777,否則在執行到Runtime.getRuntime().exec的時侯會出現Permission denied錯誤。

2

waitFor()這個也是必不可缺的,如果你需要執行多行命令的話,把waitFor()這個加上。

7. java中如何執行linux命令

執行linux命令基,基本思路是從控制台獲得輸入的指令,啟動命令行執行命令,捕捉異常,示例如下:

publicclassTestRunTime{

publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{
Stringcmd="";

if(args==null||args.length==0){
System.out.println("請輸入命令行參數");
}else{

for(inti=0;i<args.length;i++){//獲得輸入的命令
cmd+=args[i]+"";
}
}


try{
Processprocess=Runtime.getRuntime().exec(cmd);//執行命令

InputStreamReaderir=newInputStreamReader(process.getInputStream());
LineNumberReaderinput=newLineNumberReader(ir);

Stringline;
while((line=input.readLine())!=null){//輸出結果
System.out.println(line);
}
}catch(java.io.IOExceptione){
System.err.println("IOException"+e.getMessage());//捕捉異常
}
}
}

8. 怎麼用java代碼運行linux命令

以下方法支持Linux和windows兩個系統的命令行調用。還用到了apache的lang工具包commons-lang3-3.1.jar來判斷操作系統類型、也用到了和log4j-1.2.16.jar來列印日誌。至於rm -rf 是否能成功刪除文件,可以手動去調用命令行試試。

privateStringcallCmd(Stringcmd)throwsInterruptedException,UnHandledOSException,ExecuteException{
if(SystemUtils.IS_OS_LINUX){
try{
//使用Runtime來執行command,生成Process對象
Processprocess=Runtime.getRuntime().exec(
newString[]{"/bin/sh","-c",cmd});
intexitCode=process.waitFor();
//取得命令結果的輸出流
InputStreamis=process.getInputStream();
//用一個讀輸出流類去讀
InputStreamReaderisr=newInputStreamReader(is);
//用緩沖器讀行
BufferedReaderbr=newBufferedReader(isr);
Stringline=null;
StringBuildersb=newStringBuilder();
while((line=br.readLine())!=null){
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
returnsb.toString();
}catch(java.lang.NullPointerExceptione){
System.err.println("NullPointerException"+e.getMessage());
logger.error(cmd);
}catch(java.io.IOExceptione){
System.err.println("IOException"+e.getMessage());
}
thrownewExecuteException(cmd+"執行出錯!");
}

if(SystemUtils.IS_OS_WINDOWS){
Processprocess;
try{
//process=newProcessBuilder(cmd).start();
String[]param_array=cmd.split("[\s]+");
ProcessBuilderpb=newProcessBuilder(param_array);
process=pb.start();
/*process=Runtime.getRuntime().exec(cmd);*/
intexitCode=process.waitFor();
InputStreamis=process.getInputStream();
InputStreamReaderisr=newInputStreamReader(is);
BufferedReaderbr=newBufferedReader(isr);
Stringline;
StringBuildersb=newStringBuilder();

while((line=br.readLine())!=null){
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
returnsb.toString();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
thrownewExecuteException(cmd+"執行出錯!");
}

thrownewUnHandledOSException("不支持本操作系統");
}

9. java程序里調用linux命令

1.Java調用shell

Java語言以其跨平台性和簡易性而著稱,在Java裡面的lang包里(java.lang.Runtime)提供了一個允許Java程序與該程序所運
行的環境交互的介面,這就是Runtime類,在Runtime類里提供了獲取當前運行環境的介面。
其中的exec函數返回一個執行shell命令的子進程。exec函數的具體實現形式有以下幾種:
public Process exec(String command) throws IOException
public Process exec(String command,String[] envp) throws
IOException
public Process exec(String command,String[] envp,File dir) throws
IOException
public Process exec(String[] cmdarray) throws IOException
public Process exec(String[] cmdarray, String[] envp) throws
IOException
public Process exec(String[] cmdarray, String[] envp,File dir)
throws IOException

我們在這里主要用到的是第一個和第四個函數,具體方法很簡單,就是在exec函數中傳遞一個代表命令的字元串。exec函數返回的是一個Process類
型的類的實例。Process類主要用來控制進程,獲取進程信息等作用。(具體信息及其用法請參看Java doc)。

1)執行簡單的命令的方法:

代碼如下:

熱點內容
華山演算法 發布:2025-01-21 08:44:48 瀏覽:366
如何在微信上再設置一個密碼 發布:2025-01-21 08:44:39 瀏覽:731
浙江伺服器搭建雲主機 發布:2025-01-21 08:41:38 瀏覽:452
光遇和王者榮耀哪個需要的配置高 發布:2025-01-21 08:40:28 瀏覽:13
如何取消安卓微信表情 發布:2025-01-21 08:08:39 瀏覽:556
python判斷是否為字母 發布:2025-01-21 08:07:55 瀏覽:609
安卓手機如何注銷吃雞賬號並把錢拿回來 發布:2025-01-21 07:56:14 瀏覽:887
電信的密碼是什麼意思 發布:2025-01-21 07:30:36 瀏覽:717
在自己電腦搭建伺服器 發布:2025-01-21 07:27:13 瀏覽:654
怎麼配置釘釘代理網路 發布:2025-01-21 07:17:16 瀏覽:711