当我从终端手动运行java程序时,它工作正常,但当我从eclipse运行时,它不工作

u7up0aaq  于 2021-06-03  发布在  Sqoop
关注(0)|答案(2)|浏览(321)

我的程序不是从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:未找到命令

oxalkeyp

oxalkeyp1#

尝试使用命令“sh/home/avinash/sqoop.sh”。我觉得既然ubuntu不知道它是什么类型的文件,它显然抛出了commandnotfound错误。

v7pvogib

v7pvogib2#

错误消息来自您的脚本。不是日 eclipse 。
eclipse(或者更准确地说是jvm)不知道脚本的环境变量或工作目录。相反:如果从命令行运行脚本,则环境变量(例如路径)或工作目录是已知的。
你可以用这个方法 Runtime.exec(String command, String[] envp, File dir) 在java代码中指定。所以我想这应该管用:

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

相关问题