2014-10-27 2 views
5

मैंने 7.0.1 से नेटबीन्स 8.0.1 में अपडेट किया और 'जावा स्टार्ट' अक्षम होने पर मेरा जावा प्रोग्राम ठीक से संकलित करता है। जैसे ही 'वेब स्टार्ट' सक्षम किया गया है मैं निम्नलिखित त्रुटि मिलती है:नेटबीन्स चींटी बिल्ड त्रुटि 'असमर्थित तत्व कस्टमाइज़ करें'

<target name="-do-jar-jnlp-application" depends="-init-filename,-test-jnlp-type,-init-macrodef-copylibs" if="is.application+mkdist.available"> <j2seproject3:copylibs manifest="${tmp.manifest.file}"> <customize> <attribute name="Main-Class" value="${main.class}"/> </customize> </j2seproject3:copylibs> <echo>To run this application from the command line without Ant, try:</echo> <property location="${jnlp.dest.dir}/${jnlp.file}" name="jnlp.file.resolved"/> <echo>javaws "${jnlp.file.resolved}"</echo> </target>

: jnlp-impl.xml फ़ाइल के इस अनुभाग में

C:\NetBeansProjects\SearchCriteriaEditor\nbproject\jnlp-impl.xml:480: 
unsupported element customize 
  • ठीक है, जैसा कि मैं समझता हूं कि यह है: 'अनुकूलित जूनिट मैक्रो परिभाषा के लिए निम्नलिखित जोड़ें:'

    <attribute default="" name="testmethods"/> 
        <element name="customize" optional="true"/> 
    <customize/> 
    

    समस्या यह है कि मुझे नहीं पता कि यह कहां है, और न ही मैंने अपनी चींटी फ़ाइल को किसी भी तरह से संशोधित किया है ... क्या कोई मुझे थोड़ा और जानकारी दे सकता है? मुझे लगता है कि फिक्स कहीं jnlp-impl.xml फ़ाइल में जाता है; मुझे नहीं पता कि इसे कहां रखा जाए।

    संपादित करें अद्यतन: सभी वर्गों के लिए अग्रिम में jnlp-impl.xml में 'copylibs' के संदर्भ के साथ जोड़ा फ़ाइल

    <target name="-test-jnlp-type" depends="-test-jnlp-enabled" if="is.jnlp.enabled"> 
        <condition property="is.applet"> 
         <equals arg1="${jnlp.descriptor}" arg2="applet" trim="true"/> 
        </condition> 
        <condition property="is.application"> 
         <equals arg1="${jnlp.descriptor}" arg2="application" trim="true"/> 
        </condition> 
        <condition property="is.component"> 
         <equals arg1="${jnlp.descriptor}" arg2="component" trim="true"/> 
        </condition> 
        <condition property="is.applet+mkdist.available"> 
         <and> 
          <isset property="libs.CopyLibs.classpath"/> 
          <istrue value="${is.applet}"/> 
         </and> 
        </condition> 
        <condition property="is.application+mkdist.available"> 
         <and> 
          <isset property="libs.CopyLibs.classpath"/> 
          <istrue value="${is.application}"/> 
         </and> 
        </condition> 
        <condition property="is.component+mkdist.available"> 
         <and> 
          <isset property="libs.CopyLibs.classpath"/> 
          <istrue value="${is.component}"/> 
         </and> 
        </condition> 
    </target> 
    
    ...... 
    
    <target name="-do-jar-jnlp-application" depends="-init-filename,-test-jnlp-type,-init-macrodef-copylibs" if="is.application+mkdist.available"> 
        <j2seproject3:copylibs manifest="${tmp.manifest.file}"> 
         <customize> 
          <attribute name="Main-Class" value="${main.class}"/> 
         </customize> 
        </j2seproject3:copylibs> 
        <echo>To run this application from the command line without Ant, try:</echo> 
        <property location="${jnlp.dest.dir}/${jnlp.file}" name="jnlp.file.resolved"/> 
        <echo>javaws "${jnlp.file.resolved}"</echo> 
    </target> 
    <target name="-do-jar-jnlp-component" depends="-test-jnlp-type,-init-macrodef-copylibs" if="is.component+mkdist.available"> 
        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/> 
    </target> 
    

    धन्यवाद।

उत्तर

2

<j2seproject3:copylibs नामस्थान उपसर्ग j2seproject3 के साथ macrodef copylibs को आमंत्रित करता है। वहाँ एक जहां copylibs मैक्रो परिभाषित किया गया है इसी तरह (लेकिन जरूरी सटीक नहीं) buildfile में जगह, एक तरह से किया जाना चाहिए:

<macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3"> 

ऊपर लाइन तार्किक -init-macrodef-copylibs लक्ष्य के अंदर मौजूद होना चाहिए, और यह जहां है customize तत्व भी परिभाषित किया जाना चाहिए। मेरे पास नमूना नेटबीन प्रोजेक्ट के आधार पर स्निपेट नीचे है। सामग्री शायद ठीक एक तुम से मेल नहीं होगा, इसलिए एक अलग नज़रिए के साथ मेरा उत्तर ले:

<macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3"> 
    ... <!-- some attributes may be defined here first --> 
    <element name="customize" optional="true"/> <!-- customize should be defined here --> 
    <sequential> 
     ... 
     <!-- somewhere in the macrodef --> 
     <copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}"> 
      <fileset dir="${build.classes.dir}"/> 
      <manifest> 
       <attribute name="Class-Path" value="${jar.classpath}"/> 
       <customize/> <!-- this is where customize is used --> 
      </manifest> 
     </copylibs> 
     ... 
    </sequential> 
</macrodef> 
+0

हाय manouti, एक दर्द होने के लिए खेद .. copylibs के लिए कोई macrodef नहीं है। मैंने मूल प्रश्न में nlp-impl.xml में copylibs के सभी संदर्भ जोड़े हैं। क्या मुझे इसे फाइल में जोड़ने की ज़रूरत है? – Robbie62

+0

@ Robbie62 निश्चित रूप से कहीं 'copylibs' के लिए परिभाषा मौजूद है। क्या यह एक अलग चींटी buildfile में हो सकता है जिसे 'jnlp-impl.xml' द्वारा आयात किया जाता है? – manouti

+0

हाय मनुती, हाँ, एक और निर्माण फ़ाइल है जिसे मैं पूरी तरह से भूल गया था। मैं इस समय एक Google स्टार्टअप चुनौती कर रहा हूं इसलिए मैं कुछ दिनों तक इसे वापस नहीं कर पाऊंगा। – Robbie62

संबंधित मुद्दे