2014-10-27 19 views
5

Zaktualizowałem do Netbeans 8.0.1 z wersji 7.0.1, a mój program java kompiluje dobrze, jeśli "Web Start" jest wyłączony. Jak najszybciej 'Web Start' jest włączona pojawia się następujący błąd:Błąd "Nieobsługiwany element budowania Netbeans"

C:\NetBeansProjects\SearchCriteriaEditor\nbproject\jnlp-impl.xml:480: 
unsupported element customize 
  • w tej sekcji pliku jnlp-impl.xml:

    <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>

The Napraw to, jak rozumiem, to: "dodaj następujące elementy do dostosowanej definicji makra junit:"

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

Problem polega na tym, że nie mam pojęcia, gdzie to jest, ani też nie zmodyfikowałem pliku mrówki w żaden sposób ... czy ktoś może podać mi trochę więcej informacji? Zakładam, że poprawka trafia gdzieś w pliku jnlp-impl.xml; Po prostu nie mam pojęcia, gdzie to powiedzieć.

Edit zmiana: dodaje wszystkie sekcje z odniesieniami do 'copylibs' w jnlp-impl.xml Plik-

<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> 

góry dziękuję.

Odpowiedz

2

<j2seproject3:copylibs Wywołuje makrodef copylibs z prefiksem obszaru nazw j2seproject3. Nie powinno być to miejsce, w buildfile gdzie copylibs makro jest zdefiniowany w sposób podobny (ale niekoniecznie dokładnie) do:

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

Powyższa linia powinna logicznie istnieć wewnątrz tarczy -init-macrodef-copylibs, a to jest, gdy customize należy również zdefiniować element. Poniżej znajduje się fragment na podstawie przykładowego projektu NetBeans, który mam. Zawartość prawdopodobnie nie będzie pasował dokładnie ten, którego masz, więc wziąć moją odpowiedź z przymrużeniem oka:

<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

Hi manouti, przepraszam za ból .. Nie ma macrodef dla copylibs. Dodałem wszystkie odniesienia do copylibs w pliku nlp-impl.xml do pierwotnego pytania. Czy muszę dodać to do pliku? – Robbie62

+0

@ Robbie62 Na pewno istnieje gdzieś definicja 'copylibs'. Czy może być w innym pliku budowy Ant, zaimportowanym przez 'jnlp-impl.xml'? – manouti

+0

Hi manouti, tak, istnieje inny plik kompilacji, o którym całkowicie zapomniałem. W tej chwili robię wyzwanie startowe Google, więc nie będę mógł wrócić do niego przez kilka dni. – Robbie62

Powiązane problemy