Question

Je travaille sur un projet dans Netbeans qui nécessite que le projet en cours ait des privilèges root.

Je voudrais que chaque fois que j'appuie sur "Exécuter le projet". (F6) mon projet est exécuté en tant que root, donc avec l'équivalent de "gksudo javac Main", car il possède une interface graphique.

Une option consiste à démarrer netbeans avec les privilèges root, facilement en modifiant le raccourci vers "gksudo netbeans". Mais comme j'ai plusieurs projets dans netbeans, cela signifie que pour chaque projet, je dois exécuter des netbeans avec des privilèges root, ce n'est pas ce que je veux.

Une autre option, bien sûr, consiste simplement à exécuter mon projet à partir du shell, mais ce n'est pas idéal non plus.

Je pense que cela est possible en modifiant le fichier build.xml de ce projet, mais je ne parviens pas à comprendre comment.

Après quelques recherches, il semblerait qu’il s’agisse plutôt d’une question Apache Ant, j’ai accès au fichier build.xml que je peux modifier. Je dois donc savoir comment faire en sorte que Ant exécute mon projet avec sudo / gksudo. Cependant, je ne sais pas comment faire cela ou si c'est possible.

Était-ce utile?

La solution

En supposant qu'il s'agisse d'un "Java SE". projet (par exemple, une application Web ou un programme Ruby). Commencez par désactiver Compiler sous Enregistrer sous Compiler dans les propriétés du projet.

Deuxièmement, ajoutez à 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>

Il y a d'autres choses que vous pouvez ajuster mais cela devrait être suffisant pour vous aider à démarrer.

Autres conseils

Pourquoi gksudo au lieu de simplement 'sudo java Main'? Dans les deux cas, vous pouvez simplement configurer votre fichier sudoers (dans / etc) pour qu'il n'exige pas de mot de passe de la part de votre utilisateur et vous devriez être prêt à partir.

Un conseil très stupide: créez une nouvelle application Ruby, rapprochez-la de votre projet Java et indiquez ce qui suit dans 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)

Définissez le projet ruby ??sur projet principal.

Je n'ai pas essayé, mais il ne doit y avoir que des fautes de frappe.

Je sais, ce n'est pas la meilleure solution, mais NB démarre les projets java en interne et ne semble pas fournir une option de configuration pour le faire.

Btw: cette solution nécessite l’installation du plug-in Ruby on Rails dans NetBeans. Le script ne se ferme pas tant que votre programme java est en cours d'exécution.

Important : ce script suppose qu'il fonctionne sous un système d'exploitation compatible Unix (où le chemin absolu commence par "/")!

exécuter Netbeans par l'utilisateur super

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top