2009-11-30 3 views
6

나는 실행중인 프로젝트가 루트 권한을 필요로하는 netbeans 프로젝트에서 작업 중이다.sudo로 내 프로젝트를 실행하려면 netbeans를 얻으시겠습니까?

"프로젝트 실행"(F6)을 누를 때마다 내 프로젝트가 루트로 실행되므로 GUI가있는 것처럼 "gksudo javac Main"과 동등하게 실행하고 싶습니다.

"gksudo netbeans"에 대한 바로 가기를 편집하여 쉽게 루트 권한으로 넷빈을 시작할 수 있습니다. 하지만 netbeans에서 여러 프로젝트가 있기 때문에 루트 권한으로 netbeans를 실행해야하는 각 프로젝트마다 이것이 내가 원하는 것은 아닙니다.

또 다른 옵션은 물론 내 프로젝트를 셸에서 실행하는 것입니다.하지만 이는 이상적이지 않습니다.

이 프로젝트의 build.xml 파일을 변경하여 가능하다고 생각하지만 문제를 파악하는 데 어려움이 있습니다.

약간의 연구 끝에 이것이 아파치 개미 질문 인 것처럼 보일 수 있습니다. 수정할 수있는 build.xml에 액세스 할 수 있으므로 개미가 sudo/gksudo로 프로젝트를 실행하는 방법을 알아야합니다. 그러나, 나는 이것을 할 수있는 방법이나 그것이 가능한지를 알 수 없다.

+1

기본 프로젝트를 시작하는 데 사용되는 명령 줄 항목을 변경하는 옵션이 있어야합니다. 아니 ? –

+0

아니요, "Project Properties"에서 볼 수있는 netbeans를 사용하면 인수, 작업 디렉토리 및 VM 옵션을 추가 할 수 있지만 명령 줄의 "java"앞에는 아무 것도 입력 할 수 없습니다. –

답변

3

"Java SE"프로젝트 (웹 앱이나 Ruby 프로그램과는 반대)라고 가정합니다. 먼저 프로젝트 속성에서 컴파일 아래의 저장시 컴파일을 해제합니다.

둘째, build.xml에 추가 :

이 다른 세부적으로 조정할 수있는 일이 있지만, 이것은 당신이 시작하는 데 충분해야한다
<target name="-init-macrodef-java"> 
    <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1"> 
     <attribute default="${main.class}" name="classname"/> 
     <attribute default="${run.classpath}" name="classpath"/> 
     <element name="customize" optional="true"/> 
     <sequential> 
      <exec executable="gksudo" failonerror="true"> 
       <arg value="--"/> 
       <arg value="java"/> 
       <arg value="-classpath"/> 
       <arg path="@{classpath}"/> 
       <arg line="${run.jvmargs}"/> 
       <arg value="@{classname}"/> 
      </exec> 
     </sequential> 
    </macrodef> 
</target> 

.

+0

고마워요, 그게 내가 원한거야! 완전한 –

0

'sudo java Main'대신 'gksudo'가 필요한 이유는 무엇입니까? 두 경우 모두 sudoers 파일 (/ etc)을 사용자의 암호가 필요 없도록 설정하면됩니다. 슈퍼 사용자가

+0

그가 국선을 사용했다면 sudo를 설정하지 않아도 암호없이 작업 할 수 있습니다. – MitMaro

-2

실행 넷빈즈

+0

...그것은 정확하게 말한 querent이고, 그가 그것을 사용할 수없는 이유를 설명했다. –

0

아주 바보 팁 : 새로운 루비 응용 프로그램을 만들려면 자바 프로젝트에 근처에두고,

PROJECT_DIR = "MyJavaApp" 
# These must be relative to java project's dir or absolute paths 
CLASSPATH = %w[dist/lib/*.jar /usr/share/some/other/lib.jar] 
SUDO_BIN = "gksudo" 
# Append your app's jar file into cp! 
MAIN_CLASS = "com.andrew.myapp.Main" 
# Put your own opts here (-Xmx, -Xms, etc) 
JVM_OPTS = "-client" 

############################################### 
# Calculating project's root. 1st dir is a root of Ruby project, second is a common root 
projroot = File.expand_path(File.dirname(__FILE__) + "/../.." 
java_args = JVM_OPTS 
cp = [] 
# It uses globbing to expand *.jar style stuffs 
CLASSPATH.each do |path| 
    cp += path.start_with?("/") ? Dir[path] : Dir[File.join(projroot, PROJECT_DIR, path)] 
end 
java_args += "-classpath " + cp.join(File::PATH_SEPARATOR) + " " 
# The heart of our work... 
system(SUDO_BIN + " java " + java_args + " " + MAIN_CLASS) 

는 루비 프로젝트를 설정 main.rb 다음을 넣어 주 프로젝트로

나는 그것을 시도하지 않았지만 오타가 있어야합니다.

나는 이것이 최선의 해결책은 아니지만 NB는 내부적으로 자바 프로젝트를 시작하고이를 수행하기위한 구성 옵션을 제공하지 않는 것으로 보인다.

Btw :이 솔루션은 Ruby on Rails 플러그인을 NetBeans에 설치해야합니다. Java 프로그램이 실행 중일 때 스크립트가 종료되지 않습니다.

중요 :이 스크립트는 Unix와 호환되는 OS (절대 경로가 '/'로 시작하는 곳)에서 실행된다고 가정합니다!

관련 문제