从Kubuntu迁移到OS X(购买了macbook)。设置环境以使用以下内容构建我的项目(从官方网站下载,而不是存储库):
项目技术堆栈:
使用maven构建在Windows 7,Kubuntu 14.04和Mac OS X Mavericks 10.9.3上运行正常。部署到Apache Tomcat 7也没问题(没有错误,警告出现)。部署项目后,进入登录屏幕,加载主页面,浏览项目视图,直至进入“发票”页面,其中包含
#{rich:element('some_id')}.some_action()
。
呈现此页面的错误如下:
ERROR com.skeds.core.component.exceptions.SkedsCustomExceptionHandler Function 'rich:element' not found javax.el.ELException: Function 'rich:element' not found at org.jboss.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:176) at org.jboss.el.parser.SimpleNode.accept(SimpleNode.java:129) at org.jboss.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:138) at org.jboss.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:152) at org.jboss.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:195) at org.jboss.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68) at com.sun.faces.facelets.el.ELText$ELTextVariable.apply(ELText.java:203) at com.sun.faces.facelets.el.ELText$ELTextComposite.apply(ELText.java:184) at com.sun.faces.facelets.compiler.TextInstruction.apply(TextInstruction.java:96) at com.sun.faces.facelets.compiler.UIInstructionHandler.apply(UIInstructionHandler.java:141) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
我可以转到其中一个页面,有时可以在没有此错误的情况下呈现“发票”页面,但仍然使用此EL点击其他页面会出现同样的错误。
尝试了什么:
在代码调查期间发现以下依赖项在org.richfaces.function.RichFunction
类失败:
import org.richfaces.cdk.annotations.Function;
哪个是出错的最可能原因。在我的pom.xml中添加了以下依赖项:
<dependency>
<groupId>org.richfaces.cdk</groupId>
<artifactId>annotations</artifactId>
<version>4.3.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
IDE预编译器显示依赖项已解决。 mvn clean install
并重新部署项目没有结果。出现相同的错误。
el-api.jdk
的问题。在tomcat7 lib目录中有一个el-api.jdk
,在pom.xml
上有三个可能包含el-api.jdk
可能冲突的依赖项的排除项。同样在target/WEB-INF/lib
目录中也没有可能发生冲突的el-api.jdk
个文件。 catalina.sh
。还尝试使用mvn package -DskipTests jetty:run
- 所有选项都会产生相同的结果。编辑:问题出现在kubuntu 14.04和ubuntu 12.10上。也在Windows 7上测试过 - 同样的问题。所以这不是基于操作系统的错误。
任何建议都将受到青睐。
答案 0 :(得分:3)
解决。因为它总是发生,问题的原因是完全愚蠢的。 Intellij IDEA可以选择在JSF .xhtml视图上自动清理未使用的命名空间。 Invoices页面包含一个包含#{rich:element('some_id')}
的包含,但Rich Function不是实际的命名空间用法,例如标记名<rich:calendar>
。这就是Idea在项目重建之一上清理它的原因。名称空间xmlns:rich="http://richfaces.org/rich"
仅在外部invoices.xhtml中定义。并且渲染内部包含而没有声明的命名空间会导致RestoreView阶段因给定错误而崩溃。