4

多数の複合コンポーネントを JAR にパッケージ化しました。ただし、(Maven を使用して) 別のプロジェクトでそれらを使用すると、Netbeans エディターは、プロジェクトが期待どおりにコンパイルおよび実行されても、複合コンポーネントを使用する行の下に赤いエラー行を配置します。

複合コンポーネント JAR のフォルダー構造は次のようになります。

compositeComponent.jar
   META-INF
      faces-config.xml
      highcharts-taglib.xml
      MANIFEST.MF
      web.xml
      maven
         // maven stuff.
      resources
          highcharts
             Chart.xhtml
             Series.xhtml
             Tooltip.xml          
   nz
      co
         kevindoran
            highcharts
               example
                  NZPopulationTrend.class


次のhighcharts.taglib.xmlようになります。

<facelet-taglib version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd">

    <namespace>http://nz.co.kevindoran/highcharts-jsf</namespace>
    <composite-library-name>highcharts</composite-library-name>

</facelet-taglib>


[補足:faces-config.xmlweb.xmlは、ファイル拡張子を WAR に変更することで「JAR」を WAR として展開できるようにするために存在します (これは、例を実行するために行われます)。


現在のプロジェクトでは、上記のプロジェクトに次のように Maven の依存関係を指定しています。

<dependency>
    <groupId>nz.co.kevindoran</groupId>
    <artifactId>jsf-menu</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency> 

JSF ページでは、次のように複合コンポーネントを使用します。

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:hc="http://nz.co.kevindoran/highcharts-jsf">

....

<hc:TimeChart title="Price Over Time" xLabel="Date" yLabel="Sold Price (NZD)">
    <hc:TimeSeries name="Sold" series="#{cc.attrs.model.priceVsTimeChart.soldSeries}"/>
</hc:TimeChart>  

....
</html>

上記のすべての行の下に赤いエラー行が表示され、「名前空間http://nz.co.kevindoran/highcharts-jsfのライブラリが見つかりません」というメッセージが表示されます。

これらのエラー行を削除するにはどうすればよいですか? 同様の問題に関する多くの Netbeans バグ レポートを見てきましたが、すべて解決済みのようです。

このエラーは、Netbeans 7.1、7.2、および 7.3 (7.3.1 を含む) で発生します。

4

1 に答える 1

0

私はまったく同じ問題を抱えています。私の場合、それは /src/main/java フォルダーに依存します。存在する場合 (プロジェクト内のみで、jar 内にさえない場合)、このライブラリを含むプロジェクトに「名前空間のライブラリが見つかりません...」と表示されます。「java」フォルダを削除すると機能します。しかし、その後、私のバッキング Bean クラスが jar で失われています...

Netbeans 7.2および7.3、maven 2で試しました

解決:

  1. Java ソース ファイルを含む 2 番目のプロジェクトを生成します。(呼び方: jsf-lib-java)
  2. jsf-lib プロジェクト (xhtml を使用した複合コンポーネント プロジェクト) で、「java」フォルダーとすべての *.java ソースを削除します。
  3. 次の設定で jsf-lib pom.xml を追加します。


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>unpack</id>
        <phase>generate-resources</phase>
        <goals>
          <goal>unpack</goal>
        </goals>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>com.mycompany.project</groupId>
              <artifactId>jsf-lib-java</artifactId>
              <version>1.0-SNAPSHOT</version>
              <type>jar</type>
              <overWrite>true</overWrite>
              <outputDirectory>src/main/</outputDirectory>
              <includes>**/*.class</includes>
            </artifactItem>
          </artifactItems>
        </configuration>
      </execution>
    </executions>
  </plugin>

それでおしまい。これにより、必要な *.class ファイルを含む「適切な」jar ファイルが生成されます。したがって、Netbeans を「だます」ことができます。

今、私はこのソリューションを使用しています。これはハックですが、より良い解決策が見つかりませんでした。

于 2013-07-02T12:13:07.787 に答える