java – Netbeans中无法识别外部JAR中的复合组件

我在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.xml和web.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)发生此错误.

解决方法:

我有完全相同的问题.在我的情况下,它取决于/ src / main / java文件夹.如果它存在(仅在项目中,甚至在jar中),则包含此库的项目将显示“找不到名称空间的库…”
当我删除“java”文件夹时,它的工作原理.但是后来我的支持bean类错过了jar …

尝试使用Netbeans 7.2和7.3,maven 2

解:

>生成包含Java源文件的第二个项目. (称为:jsf-lib-java)
>在jsf-lib项目(使用xhtml的复合组件项目)中删除“java”文件夹和所有* .java源.
>在配置后添加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.

现在我使用这个解决方案.这是一个黑客,但没有找到更好的解决方案.

上一篇:java – 限制TextField输入


下一篇:java – 如何在同一个servlet请求中使用getOutputStream()和getWriter()?