Facelets com o Netbeans 6.1
Missing required modules for Plugin Facelets Support: JSP Parser [module org.netbeans.modules.web.jspparser/3 = 200804211638]
Para solucionar a questão, após descompactar o arquivo nbfaceletssupport-6.1.zip
ou nbfaceletssupport-6.1ml.zip
, você deve também descompactar o módulo org-netbeans-modules-web-frameworks-facelets.nbm
(que foi extraído do anterior) e editar o arquivo que está em Info/info.xml
de modo a trocar o ponto onde se faz menção a data por uma versão (eu use 1.0.0 :).
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//NetBeans//DTD Autoupdate Module Info 2.5//EN" "http://www.netbeans.org/dtds/autoupdate-info-2_5.dtd"> <module codenamebase="org.netbeans.modules.web.frameworks.facelets" distribution="" downloadsize="0" homepage="https://facelets.dev.java.net" license="AD9FBBC9" moduleauthor="Petr Pisl & Po-Ting Wu" needsrestart="false" releasedate="2008/06/04"> <manifest AutoUpdate-Show-In-Client="true" OpenIDE-Module="org.netbeans.modules.web.frameworks.facelets" OpenIDE-Module-Display-Category="Web" OpenIDE-Module-Implementation-Version="080604" OpenIDE-Module-Java-Dependencies="Java > 1.5" OpenIDE-Module-Long-Description="This module serves as a basic support for Facelets." OpenIDE-Module-Module-Dependencies="org.jdesktop.layout/1 > 1.3.23, org.netbeans.api.java/1 > 1.10.22, org.netbeans.api.web.webmodule > 1.7.21, org.netbeans.api.xml/1 > 1.13.21, org.netbeans.libs.facelets > 1.0.1, org.netbeans.modules.editor/3 > 1.26.21, org.netbeans.modules.editor.completion/1 > 1.6.22, org.netbeans.modules.editor.lib/1 > 1.9.21, org.netbeans.modules.html.editor/1 > 1.5.20, org.netbeans.modules.html.editor.lib/1 > 1.5.21, org.netbeans.modules.j2ee.dd/1 > 1.8.20, org.netbeans.modules.java.project/1 > 1.8.21, org.netbeans.modules.project.ant/1 > 1.12.22, org.netbeans.modules.project.libraries/1 > 1.13.21, org.netbeans.modules.projectapi/1 > 1.9.21, org.netbeans.modules.projectuiapi/1 > 1.13.21, org.netbeans.modules.servletjspapi/1 > 1.0.20, org.netbeans.modules.web.core.syntax/2 = 1, org.netbeans.modules.web.jsf/1 > 1.3.28, org.netbeans.modules.web.jspparser/3 = 200804211638, org.netbeans.modules.web.project > 1.6, org.netbeans.modules.xml.core/2 > 1.12.21.4, org.netbeans.modules.xml.xam/1 > 1.2, org.netbeans.modules.xml.xdm/1 > 1.2, org.netbeans.spi.palette/1 > 1.6.1, org.openide.awt > 6.7.22, org.openide.dialogs > 6.5.21, org.openide.explorer > 6.5.21, org.openide.filesystems > 6.4.21, org.openide.loaders > 5.9.21, org.openide.modules > 6.5.22, org.openide.nodes > 6.7.21, org.openide.options > 6.7, org.openide.text > 6.9.21, org.openide.util > 6.8.21, org.openide.windows > 6.5.21" OpenIDE-Module-Name="Facelets Support" OpenIDE-Module-Requires="org.openide.modules.ModuleFormat1" OpenIDE-Module-Short-Description="Support for development of web applications based on Facelets." OpenIDE-Module-Specification-Version="1.0.6"/> <license name="AD9FBBC9">[NO LICENSE SPECIFIED] </license> </module>Ao invés de se fazer menção a um release de uma data específica, devemos fazer com que o módulo seja, digamos, um pouco menos exigente (ou menos estúpido!) e para isso devemos fazer com que ele utilize como referência uma versão mínima, por exemplo. Ao fim, o meu ficou assim:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//NetBeans//DTD Autoupdate Module Info 2.5//EN" "http://www.netbeans.org/dtds/autoupdate-info-2_5.dtd"> <module codenamebase="org.netbeans.modules.web.frameworks.facelets" distribution="" downloadsize="0" homepage="https://facelets.dev.java.net" license="AD9FBBC9" moduleauthor="Petr Pisl & Po-Ting Wu" needsrestart="false" releasedate="2008/06/04"> <manifest AutoUpdate-Show-In-Client="true" OpenIDE-Module="org.netbeans.modules.web.frameworks.facelets" OpenIDE-Module-Display-Category="Web" OpenIDE-Module-Implementation-Version="080604" OpenIDE-Module-Java-Dependencies="Java > 1.5" OpenIDE-Module-Long-Description="This module serves as a basic support for Facelets." OpenIDE-Module-Module-Dependencies="org.jdesktop.layout/1 > 1.3.23, org.netbeans.api.java/1 > 1.10.22, org.netbeans.api.web.webmodule > 1.7.21, org.netbeans.api.xml/1 > 1.13.21, org.netbeans.libs.facelets > 1.0.1, org.netbeans.modules.editor/3 > 1.26.21, org.netbeans.modules.editor.completion/1 > 1.6.22, org.netbeans.modules.editor.lib/1 > 1.9.21, org.netbeans.modules.html.editor/1 > 1.5.20, org.netbeans.modules.html.editor.lib/1 > 1.5.21, org.netbeans.modules.j2ee.dd/1 > 1.8.20, org.netbeans.modules.java.project/1 > 1.8.21, org.netbeans.modules.project.ant/1 > 1.12.22, org.netbeans.modules.project.libraries/1 > 1.13.21, org.netbeans.modules.projectapi/1 > 1.9.21, org.netbeans.modules.projectuiapi/1 > 1.13.21, org.netbeans.modules.servletjspapi/1 > 1.0.20, org.netbeans.modules.web.core.syntax/2 = 1, org.netbeans.modules.web.jsf/1 > 1.3.28, org.netbeans.modules.web.jspparser/3 = > 1.0.0, org.netbeans.modules.web.project > 1.6, org.netbeans.modules.xml.core/2 > 1.12.21.4, org.netbeans.modules.xml.xam/1 > 1.2, org.netbeans.modules.xml.xdm/1 > 1.2, org.netbeans.spi.palette/1 > 1.6.1, org.openide.awt > 6.7.22, org.openide.dialogs > 6.5.21, org.openide.explorer > 6.5.21, org.openide.filesystems > 6.4.21, org.openide.loaders > 5.9.21, org.openide.modules > 6.5.22, org.openide.nodes > 6.7.21, org.openide.options > 6.7, org.openide.text > 6.9.21, org.openide.util > 6.8.21, org.openide.windows > 6.5.21" OpenIDE-Module-Name="Facelets Support" OpenIDE-Module-Requires="org.openide.modules.ModuleFormat1" OpenIDE-Module-Short-Description="Support for development of web applications based on Facelets." OpenIDE-Module-Specification-Version="1.0.6"/> <license name="AD9FBBC9">[NO LICENSE SPECIFIED] </license> </module>
Além disso, você terá que editar o arquivo META-INF/manifest.mf
que se encontra dentro de netbeans/modules/org-netbeans-modules-web-frameworks-facelets.jar
(novamente extraia o contéudo do arquivo, pois está dentro dele) e fazer a mesma coisa que fizemos com o arquivo info.xml
. Após isso, monte novamente o arquivo org-netbeans-modules-web-frameworks-facelets.jar
e coloque-o em netbeans/modules/
e finalmente monte o arquivo org-netbeans-modules-web-frameworks-facelets.nbm
. E pronto! Isso será suficiente para o usarmos com o Netbeans 6.1!
Módulo Já Corrigido
Por comodidade, talvez você queira usar o pacote já pronto com as alterações que relato acima; baixe-o aqui: nbfaceletssupport-6.1.zip. Com as alterações que fizemos, ele irá (em princípio) funcionar em qualquer versão do Netbeans 6.xxx.
Thanks To
The JJ Blogger - Java, Oracle, PostgreSQL, and More... - If you need help installing Facelets with netbeans 6.1 or later and don't understand portuguese, see this post.Po-Ting Wu's Weblog
7 Comments:
Grande trabalho márcio, vou testar com o plugin do seam generator , pq o jboss tools no eclipse é impossivel de usar.
Vc enviou essas alterações para o pessoal que mantem o projeto?
O erro que relatei no post acima acontece com o Netbeans 6.1 com Patch 2 (e o ainda para ser lançado, Patch 3). Portanto se você instalar o Netbeans 6.1 do zero e não atualizá-lo, não terá este problema com o plugin do Facelets para Netbeans 6.1.
A correção que sugiro acima, não dará suporte a code completion/insight. Pois quando se tenta invocar o recurso (CTRL + SPACE, por exemplo) um erro com o parser (a falta ) impede o uso desses recursos. O erro é o seguinte:
java.lang.ClassNotFoundException: org.netbeans.modules.web.jsps.parserapi.JspParserAPI$ParseResult
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:244)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Caused: java.lang.NoClassDefFoundError: org/netbeans/modules/web/jsps/parserapi/JspParserAPI$ParseResult
at org.netbeans.modules.web.frameworks.facelets.editor.FaceletsContextInfoImpl.getCachedParseResult(FaceletsContextInfoImpl.java:102)
at org.netbeans.modules.web.frameworks.facelets.editor.FaceletsContextInfoImpl.getCachedParseResult(FaceletsContextInfoImpl.java:83)
at org.netbeans.modules.web.core.syntax.JspUtils.getCachedParseResult(JspUtils.java:121)
at org.netbeans.modules.web.core.syntax.JspUtils.getCachedParseResult(JspUtils.java:129)
at org.netbeans.modules.web.core.syntax.JspSyntaxSupport.getParseResult(JspSyntaxSupport.java:209)
at org.netbeans.modules.web.core.syntax.JspSyntaxSupport.getBeanData(JspSyntaxSupport.java:736)
at org.netbeans.modules.web.core.syntax.completion.JspCompletionQuery.queryEL(JspCompletionQuery.java:357)
at org.netbeans.modules.web.core.syntax.completion.JspCompletionQuery.query(JspCompletionQuery.java:128)
at org.netbeans.modules.web.core.syntax.completion.JspCompletionProvider.queryImpl(JspCompletionProvider.java:192)
at org.netbeans.modules.web.core.syntax.completion.JspCompletionProvider$Query.doQuery(JspCompletionProvider.java:110)
at org.netbeans.modules.web.core.syntax.completion.JspCompletionProvider$AbstractQuery.query(JspCompletionProvider.java:211)
at org.netbeans.spi.editor.completion.support.AsyncCompletionTask.run(AsyncCompletionTask.java:218)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:561)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:986)
BOAS E MÁS NOTÍCIAS:
Após contatar o pessoal do Netbeans, fui informado pelo Jeff Rubinoff que no Netbeans 6.5 teremos suporte nativo a Facelets. Já para o Netbeans 6.1, não há previsão (e pelo que ele falou, nem esperança) de lançamento de uma correção que permita o uso do plugin do Facelets no Netbeans.
Fiz um teste com o Netbeans 6.5M1, Product Version NetBeans IDE Dev (Build 200807040101) e o plugin Facelets modificado que publiquei nesta página (não testei com o original do Facelets) e constatei que está funcionando tudo 100%! Incluindo code insight/completion, syntax highlight, tudinho!
Oi, estou utilizando netbeans_6.5_beta e está funcionando td perfeitamente.
thanks;
ótimo trabalho. Meus parabéns... eu já tava desistindo de usar esse bicho. abraçaos.
Muito bom! Ótimo Trabalho.
Olá Marcio,
Fiz o teste com o Netbeans 6.5 e funcionou legal o autocomplete, mas apenas em arquivos com estrutura html. Se eu utilizar o ui:composition não tem acordo. Mesmo no projeto de exemplo (FaceletsTemplateExamples) este problema ocorre em arquivos com o ui:composition. Tem idéia de como corrigir isto?
Parabéns pelo post. Abraços.
Post a Comment
<< Home