我有一个依赖外部 JAR 文件的 JSF 2 应用程序。这样的 JAR 文件是由同一 Eclipse 工作集中的其他项目生成的。选择这种架构是为了模块化,所以我在 JAR 中有一些领域核心服务。我的应用程序依赖于该 JAR 文件并使用它来提供最终用户服务。
在 JSF2 应用程序中,我有一个简单的托管 bean,如下所示:
package ufprJSF;
import java.util.Collection;
import javax.faces.bean.*;
import unidades.dominio.Cargo;
import unidades.dominio.repository.CargoRepository;
@ManagedBean
public class CargoBean {
private CargoRepository cargoRepository;
private Collection<Cargo> todos;
public Collection<Cargo> getTodos() {
return todos;
}
public String listarTodos() {
return "cargos?faces-redirect=true";
}
}
应用程序的主页显示了一个菜单,其中包含一些链接,其中一个链接到上述 bean 的 listarTodos()
方法。该方法只是重定向到应用程序的另一个页面。
如果我尝试在本地 TomCat 8 服务器上运行该应用程序,我会收到:
HTTP Status 404 - /ufprJSF/index.xhtml
type Status report
message /ufprJSF/index.xhtml
description The requested resource is not available.
Apache Tomcat/8.0.14
index.xhtml
不使用上面的 bean,它只是显示一个菜单,其中包含一个指向 listarTodos()
方法的链接 bean 。控制台显示以下内容(在堆栈中的许多其他行中):
Caused by: java.lang.ClassNotFoundException: unidades.dominio.repository.CargoRepository
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1293)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1145)
... 33 more
项目编译,因此在编译期间,找到了引用的接口(interface),这让我相信 JSF2 应用程序的依赖项已正确设置。包含这种类型的 JAR 显示在 Eclipse 包资源管理器中的 Referenced Libraries
节点下。
如果我简单地注释第 12 行如下
...
@ManagedBean
public class CargoBean {
// private CargoRepository cargoRepository;
private Collection<Cargo> todos;
...
运行时问题消失了。但是,我的 bean 依赖于 CargoRepository
接口(interface)来执行它必须执行的操作,因此我必须找到一种在我的 JSF2 应用程序中使用该 JAR 的方法。
如有任何帮助,我们将不胜感激!
提前致谢!
最佳答案
检查部署的应用WEB-INF/lib目录下是否存在Jar库
关于java - 如何在本地 TomCat 服务器托管的 JSF 应用程序中使用在外部 JAR 中声明的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755460/