Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetBeans中未识别JAR中的JSF复合组件_Jsf_Jsf 2_Netbeans_Jar_Composite Component - Fatal编程技术网

NetBeans中未识别JAR中的JSF复合组件

NetBeans中未识别JAR中的JSF复合组件,jsf,jsf-2,netbeans,jar,composite-component,Jsf,Jsf 2,Netbeans,Jar,Composite Component,我已经在我的项目中添加了一个公共JAR。这个罐子看起来像 CommonWeb.jar |-- META-INF | |-- resources | | `-- common | | |-- css | | | `-- my.css | | |-- js | | | `-- my.js | | |-- images | |

我已经在我的项目中添加了一个公共JAR。这个罐子看起来像

CommonWeb.jar
 |-- META-INF
 |    |-- resources
 |    |    `-- common
 |    |         |-- css
 |    |         |    `-- my.css
 |    |         |-- js
 |    |         |    `-- my.js
 |    |         |-- images
 |    |         |    `-- my.png
 |    |         |-- components
 |    |         |    `-- mycomposite.xhtml
 |    |         `-- templates
 |    |              `-- mytemplate.xhtml
 |    |-- faces-config.xml
 |    `-- MANIFEST.MF
 :
除了Netbeans无法识别我的复合组件之外,一切都正常。试图使用该组件的页面如下所示

<ui:composition template="/resources/common/templates/mytemplate.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:cmn="http://java.sun.com/jsf/composite/common/components">

    <ui:define name="content">
        ...
        <cmn:mycomposite ... />
        ...
    </ui:define>
</ui:composition>

...
...
项目将编译并运行,不用担心。但是IDE在
上给了我红色的曲线,并且没有自动完成,等等。如果我将组件复制到项目自己的resources文件夹中,一切都会正常工作,因此netbeans似乎只是不关注jar

有相当多的问题与类似的问题,例如:

……但没有令人满意的解决办法或变通办法

也有一些关于这个问题的netbeans bug报告,但这些似乎都是“修复的”

我是否缺少一些配置?有没有人真的能在最新版本的NetBeans(在撰写本文时是NetBeans 7.4补丁2)上实现这一点?有没有人找到一个真正有效的工作

更新:


此问题继续出现在NetBeans 8中。此问题是一个仅限IDE的问题,并在版本8.1中继续存在。它源于中发现的bug,特别是在“JSF编辑器for XHTML”模块(org.netbeans.modules.web.JSF.Editor)中

我通过下载Netbeans的8.1版本源文件并自行应用建议的修补程序来解决这个问题。我猜这在早期版本中也是一个类似的问题,但我没有检查这个

要下载和编译Netbeans,您可以按照

摘要变动:

CompositeComponentModel.java第296行更改为:

if (parent != null && parent.getName().equalsIgnoreCase("META-INF")) { //NOI18N
namePattern = ".*\\.tld|.*\\.taglib\\.xml|.*\\.xhtml",
JsfBinaryIndexer.java第74行更改为:

if (parent != null && parent.getName().equalsIgnoreCase("META-INF")) { //NOI18N
namePattern = ".*\\.tld|.*\\.taglib\\.xml|.*\\.xhtml",
第81行上递增的索引器版本更改为:

static final int INDEXER_VERSION = 11; //NOI18N

考虑到该漏洞正在被跟踪,希望它能进入下一个版本。

我不做Netbeans,所以我现在无法亲自试用并写出可靠的答案。我只能建议您自己尝试一件事:创建一个
/META-INF/foo.taglib.xml
,其中您根据以下问题和回答为JAR中包含的复合组件显式声明一个新名称空间:然后,尝试在Netbeans中使用该新的xml名称空间。至少,“组件库”通常是这样工作的,我很难想象Netbeans会不考虑它们。@BalusC在
*.taglib.xml
中声明
名称空间
组合库名
,并不能解决问题。可以肯定的是,taglib在JAR中(不是在战争中),您确实将using页面中的XML名称空间更改为taglib中声明的名称空间?是的,这里一切正常。此外,项目编译和运行没有任何问题,这只是一个恼人的问题,NetBeans无法识别复合组件,因此将页面标记为错误。当一些标记在taglib.xml中显式定义时,NetBeans也*没有问题,问题只是与复合组件有关,这些组件在
*.taglib.xml
中没有显式定义,而是通过使用
定义的。问题在NetBeans 8.1中继续存在