سؤال

وأنا أعمل على مشروع في نتبيانس يتطلب المشروع تشغيل لديك امتيازات الجذر.

وأود بحيث في كل مرة أدفع "مشروع تشغيل" (F6) تشغيل مشروعي كجذر، وذلك مع ما يعادل "gksudo javac الرئيسي"، كما هو الحال لديه واجهة المستخدم الرسومية.

وخيار واحد هو أن تبدأ نتبيانس مع امتيازات الجذر، القيام به بسهولة عن طريق تحرير الاختصار إلى "gksudo نتبيانس". ولكن كما قلت مشاريع متعددة في نتبيانس هذا يعني أن لكل مشروع يجب أن أركض نتبيانس مع امتيازات الجذر، وهذا ليس ما أريد.

وثمة خيار آخر، بالطبع، هو ببساطة تشغيل مشروعي من قذيفة، ولكن هذه ليست مثالية سواء.

وأعتقد أن هذا ممكن عن طريق تغيير هذه المشاريع ملف build.xml ولكن أواجه صعوبة في معرفة كيف.

وبعد بعض الأبحاث أنه سيكون يبدو أن هذا هو بالأحرى مسألة أباتشي النملة، والحصول على build.xml التي يمكنني تعديل لذلك أنا بحاجة لمعرفة كيفية الحصول على النملة لتشغيل مشروعي مع سودو / gksudo. ومع ذلك، لا يمكن معرفة كيفية القيام بذلك أو إذا كان ذلك ممكنا.

هل كانت مفيدة؟

المحلول

وعلى افتراض هذا هو مشروع "جافا SE" (في مقابل، ويقول، تطبيق ويب أو برنامج روبي). أولا، إيقاف ترجمة على حفظ تحت تجميع في خصائص المشروع.

والثانية، إضافة إلى 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>

وهناك أشياء أخرى يمكنك صقل ولكن هذا ينبغي أن يكون كافيا للحصول على انك بدأته.

نصائح أخرى

وماذا gksudo بدلا من مجرد "جافا سودو الرئيسية؟ في كلتا الحالتين، يمكنك فقط وضع ملف sudoers (في / الخ) للا يتطلب كلمة مرور من المستخدم الخاص بك، ويجب أن تكون على ما يرام.

وهناك معلومات غبية جدا: إنشاء تطبيق روبي الجديد، ووضعها بالقرب من مشروع جافا الخاص بك، ووضع ما يلي ل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)

وتعيين المشروع روبي إلى المشروع الرئيسي.

وأنا لم أحاول ذلك، ولكن يجب أن يكون هناك الوحيدة الأخطاء المطبعية.

وأنا أعلم، وهذا ليس الحل الأمثل، ولكن NB يبدأ مشاريع جافا داخليا ويبدو لا يوفر خيار التكوين للقيام بذلك.

وراجع للشغل: هذا الحل يحتاج تركيب روبي على القضبان المساعد في نتبيانس. السيناريو لا يخرج بينما برنامج جافا الخاص بك قيد التشغيل.

على هام : ل! يفترض هذا السيناريو أنه يعمل تحت نظام التشغيل يونكس متوافق (حيث يبدأ مسار مطلق مع '/')

وتشغيل نتبيانس التي كتبها super المستخدم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top