7

実行中のプロジェクトにroot権限が必要なNetBeansのプロジェクトに取り組んでいます。

「RunProject」(F6)を押すたびに、プロジェクトがrootとして実行されるようにしたいので、「gksudojavacMain」と同等のGUIがあります。

1つのオプションは、root権限でNetBeansを起動することです。これは、「gksudonetbeans」へのショートカットを編集することで簡単に実行できます。しかし、NetBeansには複数のプロジェクトがあるため、プロジェクトごとにroot権限でNetBeansを実行する必要があるため、これは私が望んでいることではありません。

もちろん、別のオプションは、シェルからプロジェクトを実行することですが、これも理想的ではありません。

これは、このプロジェクトのbuild.xmlファイルを変更することで可能だと思いますが、その方法を理解するのに問題があります。

いくつかの調査の後、これはむしろApache Antの質問であるように思われます。私は、変更可能なbuild.xmlにアクセスできるので、Antにsudo/gksudoを使用してプロジェクトを実行させる方法を知る必要があります。しかし、私はこれを行う方法やそれが可能かどうかを理解することはできません。

4

4 に答える 4

3

これが「Java SE」プロジェクトであると仮定します (たとえば、Web アプリや Ruby プログラムとは対照的です)。まず、プロジェクト プロパティの Compiling で Compile on Save をオフにします。

次に、次のように追加し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>

微調整できるものは他にもありますが、始めるにはこれで十分です。

于 2009-12-03T14:34:56.407 に答える
0

非常にばかげたヒント:新しいRubyアプリケーションを作成し、それをJavaプロジェクトの近くに置き、以下をmain.rbに置きます。

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)

rubyプロジェクトをメインプロジェクトに設定します。

試していませんが、タイプミスしかないはずです。

これは最善の解決策ではないことはわかっていますが、NBはJavaプロジェクトを内部で開始し、それを行うための構成オプションを提供していないようです。

ところで:このソリューションでは、RubyonRailsプラグインをNetBeansにインストールする必要があります。Javaプログラムの実行中は、スクリプトは終了しません。

重要:このスクリプトは、Unix互換のOS(絶対パスは「/」で始まる)で実行されることを前提としています。

于 2009-12-01T23:25:45.587 に答える
0

なぜ'sudojava Main'ではなくgksudoなのですか?どちらの場合も、sudoersファイル(/ etc内)をユーザーからのパスワードを必要としないように設定するだけで、準備は完了です。

于 2009-11-30T21:26:02.353 に答える
-2

ユーザー super で Netbeans を実行する

于 2009-12-01T14:38:44.767 に答える