JSF中的Omnifaces库,Java类路径找不到类型 [英] Omnifaces library in JSF, Java classpath Cannot find type

查看:95
本文介绍了JSF中的Omnifaces库,Java类路径找不到类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用 Omnifaces 来恢复xhtml jsf中的常量. a>库,但是当我运行项目时,我得到:

I try to recover the constants in my xhtml jsf in using Omnifaces library, but when I run my project I get:

在类路径中找不到类型'fr.epsi.utils.ConstantsPages'.

Cannot find type 'fr.epsi.utils.ConstantsPages' in classpath.

这是我的xhtml页面:

Here is my xhtml page :

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:o="http://omnifaces.org/ui">
<o:importConstants type="fr.epsi.utils.ConstantsPages" />
<h:head>
    <title>Acceuil</title>
    <h:outputStylesheet name="css/style.css"/>
</h:head>
<h:body>
    <h:panelGrid columns="3" cellpadding="10">
        <h:link value="Home" outcome="#{ConstantsPages.LOGIN_PAGE}" />
    </h:panelGrid>
<h:body>
</html>

还有我的ConstantsPages类:

And my ConstantsPages class :

package fr.epsi.utils;

public class ConstantsPages {    
    /* GENERAL */
    public static final String LOGIN_PAGE = "/General/login";
    public static final String LOGIN_CLIENT_PAGE = "/General/loginClient";
    public static final String LOGIN_TECHNICIEN_PAGE = "/General/loginTechnicien";
    public static final String ACCUEIL_PAGE = "/General/accueil";
}

还有堆栈跟踪:

java.lang.IllegalArgumentException: Cannot find type 'fr.epsi.utils.ConstantsPages' in classpath.
at org.omnifaces.taghandler.ImportConstants.toClass(ImportConstants.java:173)
at org.omnifaces.taghandler.ImportConstants.collectConstants(ImportConstants.java:134)
at org.omnifaces.taghandler.ImportConstants.apply(ImportConstants.java:117)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:774)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: fr.epsi.utils.ConstantsPages
at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808)
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.omnifaces.taghandler.ImportConstants.toClass(ImportConstants.java:156)
... 36 more

请帮助我!

推荐答案

您需要确保正确编译了类文件并将其放置在webapp的运行时类路径中.例如.在WAR中为/WEB-INF/classes/fr/epsi/utils/ConstantsPages.class.

You need to make sure that the class file is properly compiled and placed in webapp's runtime classpath. E.g. as /WEB-INF/classes/fr/epsi/utils/ConstantsPages.class inside the WAR.

此异常表明并非如此.确实没有其他原因.如果您使用的是IDE,请确保该类文件位于Web项目的Java源文件夹中,并且已清理,重建和重新部署了该项目并重新启动了服务器.

This exception says that it is not. There's really no other cause. If you're using an IDE, make sure that the class file is inside Java source folder of the web project and that you've cleaned, rebuilt and redeployed the project and restarted the server.

这篇关于JSF中的Omnifaces库,Java类路径找不到类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆