java - 如何在本地 TomCat 服务器托管的 JSF 应用程序中使用在外部 JAR 中声明的接口(interface)

标签 java eclipse jsf tomcat jar

我有一个依赖外部 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/

相关文章:

java - 如何在Hybris中安装ywebfragmentcache?

java - Json同名序列化和反序列化

java - 线程中出现异常 "main"java.lang.OutOfMemoryError : Java heap space on eclipse

eclipse - 如何增加 Eclipse 控制台中每行打印的字符数?

java - 在关系中使用 JPA 的最佳方式

jsf - 如何在没有 web.xml 的 Java EE 7 环境中运行 JSF 2.2 页面?

java - Spring MVC 请求映射传递不应该传递的请求

Java servlet : only allow own client

java - Antlr Eclipse IDE White Space 没有被跳过

jsf - 使用 2 个 map 或带有行和列标题的列表的 PrimeFaces 复选框网格?