如何以Eclipse中的超级用户身份运行我的应用程序?

Ron*_*ld 25 java eclipse ssl sudo client-server

当我尝试从Eclipse运行我的服务器应用程序时,我遇到了错误.错误是java.net.BindException:权限被拒绝.我想这是因为我使用端口443来建立SSL连接.如果我使用java和sudo在命令行上运行我的代码,我可以解决这个问题.有没有办法设置Eclipse,以便当我点击运行按钮时,我的应用程序是用sudo执行的?

red*_*moc 15

您可以按照以下步骤以超级用户身份编译/调试应用程序.

  1. 重命名您的java应用程序

    sudo mv/usr/lib/jvm/java-6-openjdk/jre/bin/java /usr/lib/jvm/java-6-openjdk/jre/bin/java.ori

  2. 创建以下脚本并将其存储为/ usr/lib/jvm/java-6-openjdk/jre/bin/java

    #!/bin/bash
    # file:  /usr/lib/jvm/java-6-openjdk/jre/bin/java
    # descr: Starter for jdk. Runs jdk as root when 
    #        cmd-line-arg "--run-as-root" is specified.
    #
    jre="/usr/lib/jvm/java-6-openjdk/jre/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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更改权限以使其可执行

    sudo chmod 0755/usr/lib/jvm/java-6-openjdk/jre/bin/java

  4. 启动日食

  5. 转到Window-> Preferences-> Java-> Installed JREs
  6. 将java-6-openjdk复制到java-6-openjdk-root
  7. 编辑JRE并将"--run-as-root"添加为默认VM参数

要以root身份运行项目,您需要执行以下步骤:

  1. 转到Project-> Properties-> Java Build Path
  2. 双击JRE系统库并在Alternate JRE中选择"java-6-openjdk-root"

注意:这个想法来自http://www.eclipse.org/forums/index.php/mv/msg/87353/724852/#msg_724852


Zol*_*lyi 0

如果您使用外部工具(运行菜单/外部工具或工具栏上运行/调试图标旁边的图标),您可以使用任何脚本或您喜欢的任何内容。这些脚本可能会给您更高的权限,或者其他什么。

另一方面,通过这种方式调试应用程序可能会变得非常困难,因为“运行”命令和“调试”命令都不与此外部工具配置关联。也许可以连接应用程序的 Eclipse 调试器,但我不知道这是怎么可能的。