在Eclipse中以root身份运行Java程序

时间:2014-10-26 16:56:30

标签: java eclipse ubuntu

我需要以root身份运行我的程序。我看了this问题,但它有点有效。我需要使用stdin并使用bash脚本似乎不接受stdin。我正在使用Eclipse和Ubuntu。有任何想法吗?这也会导致其他Java程序出现问题,因为它们也不接受stdin。

如果您运行此代码:

import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        while (true) {
            try {
                System.out.print((char) System.in.read());
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

他们在控制台中键入内容并按Enter键,输出您输入的内容。

当我使用bash脚本时:

#!/bin/bash
# file:  /usr/lib/jvm/java-8-oracle/bin/java
# descr: Starter for jdk. Runs jdk as root when 
#        cmd-line-arg "--run-as-root" is specified.
#
jre="/usr/lib/jvm/java-8-oracle/bin/java.ori"
run_as_root=false
args=

# Filter command-line argument
for arg in "$@"
do
  case "$arg" in
  --run-as-root)  run_as_root=true
                  ;;
  *)              args="$args $arg"
                  ;;

  esac
done

# Remove leading whitespaces
args=$(echo $args | sed -e 's/^[ \t]*//')

if $run_as_root
then
  echo "WARNING: Running as root!"
  gksu "$jre $args"
else
  $jre $args
fi

我得到了一堆奇怪的字符,当我删除char cast时,我得到-1,意思是流的结束。enter image description here

1 个答案:

答案 0 :(得分:0)

如果从Eclipse中运行它,Eclipse将启动该程序。这意味着您需要以root身份登录,或者需要重新配置eclipse以使用sudo

以root身份登录更容易,因为它不需要任何额外的工作;然而,它也更具风险,因为你将你的系统暴露给程序中的错误和日食程序中的错误。

sudo下运行意味着您可能并不总是拥有控制台。安装程序后,情况会更加真实。我建议你现在就做它只是让它登录到一个文件,好像你正在处理低于1000端口的套接字,你可能正在编写一个类似的守护进程,并且它将在(完成之后)例行启动缺乏控制台的环境。