簡體   English   中英

當我從終端手動運行Java程序時,它運行正常,但是當我從Eclipse運行時,它卻無法運行

[英]When I am running java program manually from terminal it is working fine but it is not working when i am running from eclipse

我的程序不是從eclipse運行,而是通過ubuntu中的終端運行。

以下是我在Java中運行的Shell腳本

#!/usr/bin/env bash

# Running sqoop commands

s="$(sqoop help)"

echo "$s"

下面是java代碼

package flexibility;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Flex {

    public static void main(String args[]) throws Exception {

        String s = null;
        String line = "";
        String sqoopCommand = "sqoop help";

        try {

            Process p = Runtime.getRuntime().exec("/home/avinash/sqoop.sh");
            p.waitFor();

            StringBuffer output = new StringBuffer();
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            while ((line = stdInput.readLine()) != null) {
                output.append(line + "\n");

            }
            while ((line = stdError.readLine()) != null) {
                output.append(line + "\n");

            }
            System.out.println("### " + output);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

錯誤信息 :

/home/avinash/sqoop.sh:第5行:sqoop:找不到命令

錯誤消息來自您的腳本。 不是來自Eclipse。

Eclipse(或更確切地說是JVM)不了解環境變量或腳本的工作目錄。 相反:如果從命令行運行腳本,則已知環境變量(例如PATH)或工作目錄。

您可以使用方法Runtime.exec(String command, String[] envp, File dir)在Java代碼中指定此方法。 所以我想這應該工作:

Process p = 
    Runtime.getRuntime().exec("/home/avinash/sqoop.sh", null, new File("/home/avinash/"));

嘗試使用命令“ sh /home/avinash/sqoop.sh”。 我感覺由於ubuntu不知道它是哪種文件,很明顯拋出命令未找到錯誤。

暫無
暫無

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

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