簡體   English   中英

在Java中運行Linux命令

[英]Running linux command in java

我想在Java中運行“ ls”命令,我的代碼是-注意:-我正在使用WINDOWS。

import java.io.IOException;

public class Example
{
    public void fn()
    {
        Runtime run = Runtime.getRuntime();  
        Process p = null;  
        String cmd = "ls"; 

        try {  
            p = run.exec(cmd);  

            p.getErrorStream();  
            p.waitFor();
        } catch (IOException | InterruptedException e) {  
            e.printStackTrace();  
            System.out.println("ERROR.RUNNING.CMD");  
        } finally {
            p.destroy();
        }
    }

    public static void main(String[] args) throws IOException
    {
        Example sp = new Example();
        sp.fn();
    }
}

但是在Eclipse中運行此代碼時出現以下錯誤-

java.io.IOException: Cannot run program "ls": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at Example.fn(Example.java:12)
    at Example.main(Example.java:28)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 6 more
Exception in thread "main" ERROR.RUNNING.CMD
java.lang.NullPointerException
    at Example.fn(Example.java:23)
    at Example.main(Example.java:28)

需要糾正什么? 我應該添加什么庫等來執行這段代碼?

如果要從Java運行任何命令,請確保PATH環境變量中存在此文件的可執行文件。

或者至少您必須將工作目錄設置為/usr/bin或類似目錄。

另一種解決方案是使用可執行文件的絕對路徑,例如:

Runtime.getRuntime().exec("/usr/bin/ls");

但是,指定任何文件的絕對路徑是一種不好的方法。

為什么不使用File#listFiles()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM