我在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(这是为了运行示例)。 / p>
在我当前的项目中,我已经在上面的项目中指定了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)上发生此错误。
答案 0 :(得分:0)
我有完全相同的问题。在我的情况下,它取决于/ src / main / java文件夹。如果它存在(仅在项目中,甚至在jar中),则包含此库的项目将显示“找不到名称空间的库...” 当我删除“java”文件夹时,它的工作原理。但是我的支持bean课程在罐子里错过了......
尝试使用Netbeans 7.2和7.3,maven 2
解决方案:
<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。
现在我使用这个解决方案。这是一个黑客,但没有找到更好的解决方案。