2014-10-27 61 views
5

我從7.0.1更新到Netbeans 8.0.1,如果'Web Start'被禁用,我的java程序編譯得很好。只要 'Web Start的' 啓用我收到以下錯誤:Netbeans螞蟻生成錯誤'不支持的元素定製'

C:\NetBeansProjects\SearchCriteriaEditor\nbproject\jnlp-impl.xml:480: 
unsupported element customize 
  • 在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>

的修復,據我所知:'添加以下自定義junit宏定義:'

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

麻煩是我不知道那裏是什麼,也沒有以任何方式修改我的螞蟻文件...任何人都可以給我多一點信息?我假定修補程序在jnlp-impl.xml文件中的某處;我只是不知道該把它放在哪裏。

編輯更新:增加所有部分與引用 'copylibs' 在JNLP-impl.xml中的文件 -

<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的宏定義copylibs。應該有構建文件一個地方copylibs宏被定義,在某種程度上類似(但不一定是精確的),以:

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

上面行應邏輯上-init-macrodef-copylibs目標內部存在的,這是其中也應定義元素customize。以下是基於我擁有的示例NetBeans項目的片段。內容可能不完全匹配你有一個,所以把我的答案用一粒鹽:

<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 2014-11-19 05:55:47

+0

@ Robbie62肯定在某處存在'copylibs'的定義。它可能位於由'jnlp-impl.xml'導入的另一個Ant構建文件中嗎? – manouti 2014-11-19 17:36:08

+0

嗨manouti,是的,還有另一個我完全忘記了的構建文件。我目前正在進行Google Startup挑戰,因此直到幾天後我才能夠回到它。 – Robbie62 2014-11-23 04:16:51