2014-10-27 20 views
5

Tôi cập nhật lên Netbeans 8.0.1 từ 7.0.1 và chương trình java của tôi biên dịch tốt nếu 'Web Start' bị tắt. Ngay sau khi 'Web Start' được kích hoạt Tôi nhận được lỗi sau:Lỗi xây dựng kiến ​​trúc Netbeans 'không được hỗ trợ tùy chỉnh'

C:\NetBeansProjects\SearchCriteriaEditor\nbproject\jnlp-impl.xml:480: 
unsupported element customize 
  • trong phần này của tập tin 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>

Các sửa, như tôi hiểu là: 'thêm sau vào định nghĩa macro junit được tùy chỉnh:'

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

Rắc rối là tôi không biết nó ở đâu, tôi cũng không sửa đổi tệp kiến ​​của mình theo bất kỳ cách nào ... bất kỳ ai cũng có thể cung cấp thêm thông tin cho tôi không? Tôi giả định sửa chữa đi đâu đó trong tệp jnlp-impl.xml; Tôi chỉ không biết phải đặt nó ở đâu.

Sửa cập nhật: bổ sung tất cả các phần với sự tham khảo để 'copylibs' trong jnlp-impl.xml File-

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

Cảm ơn trước.

Trả lời

2

<j2seproject3:copylibs gọi macrodef copylibs bằng tiền tố không gian tên j2seproject3. Nên có một chỗ đứng trong buildfile nơi copylibs vĩ mô được xác định, trong một cách tương tự (nhưng không nhất thiết phải chính xác) tới:

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

Dòng trên nên logic tồn tại bên trong mục tiêu -init-macrodef-copylibs, và đây là nơi mà Phần tử customize cũng phải được xác định. Dưới đây là đoạn trích dựa trên dự án mẫu NetBeans mà tôi có. Nội dung có thể sẽ không phù hợp chính xác một trong những bạn có, vì vậy hãy trả lời tôi với một hạt muối:

<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, xin lỗi là một nỗi đau .. Không có macrodef cho copylibs. Tôi đã thêm tất cả các tham chiếu đến copylibs trong nlp-impl.xml vào câu hỏi gốc. Tôi có cần thêm tệp này vào tệp không? – Robbie62

+0

@ Robbie62 Để chắc chắn có một định nghĩa cho 'copylibs' ở đâu đó. Nó có thể nằm trong một tệp xây dựng Ant khác được nhập bởi 'jnlp-impl.xml' không? – manouti

+0

Hi manouti, có, có một tập tin xây dựng mà tôi hoàn toàn quên mất. Tôi đang thực hiện thử thách Google Startup vào lúc này nên tôi sẽ không thể quay lại với nó cho đến một vài ngày. – Robbie62

Các vấn đề liên quan