1

可能重复:
找不到 db4o 数据库文件

我正在尝试使用 DB4O 和 JSF 创建一个简单的 CRUD 应用程序。在我的网络项目中,我有两个包:

  1. com.crud.bean包含CRUDClient.java
  2. com.crud.entities包含 DB4O 实体Client.java

webContent 包含一个 JSP 文件addClient.jsp,其中包含一个带有客户端必需字段的表单。我将在 JSP 文件中声明CRUDClient.java为托管 beanfaces-config.xml以使用其功能和属性。

但是当我运行项目时,出现以下错误

15:44:32,444 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4)     MSC00001:Failed to start service     jboss.deployment.unit."DB_WEB.war".POST_MODULE:org.jboss.msc.service.StartException in service jboss.deployment.unit."DB_WEB.war".POST_MODULE: Failed to process phase POST_MODULE     of deployment     "DB_WEB.war"atorg.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at     org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.ja    va:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at     org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)     [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_01]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_01]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_01]
Caused by: java.lang.NoClassDefFoundError: com/db4o/ObjectContainer
    at java.lang.Class.getDeclaredConstructors0(Native Method) [rt.jar:1.7.0_01]
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) [rt.jar:1.7.0_01]
    at java.lang.Class.getConstructor0(Unknown Source) [rt.jar:1.7.0_01]
    at java.lang.Class.getConstructor(Unknown Source) [rt.jar:1.7.0_01]
    at     org.jboss.as.web.deployment.jsf.JsfManagedBeanProcessor.deploy(JsfManagedBeanProcessor.java:108)
    at         org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.    java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more
Caused by: java.lang.ClassNotFoundException: com.db4o.ObjectContainer from [Module "deployment.DB_WEB.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    ... 11 more

这是如何引起的,我该如何解决?

4

1 回答 1

3

引起:java.lang.ClassNotFoundException: com.db4o.ObjectContainer

这只是意味着运行时类路径中缺少提到的类(或至少包含提到的类的 JAR 文件)。包名暗示它是一个 DB4O 类,通常以 JAR 文件的形式提供。

webapp 的默认运行时类路径包括 webapp 的/WEB-INF/lib文件夹。因此,如果您确保将 DB4O JAR 文件放入其中并重新构建/重新部署/重新启动,那么该异常应该会消失。


请注意,此问题与 JSF/JSP 无关。这只是基本的Java。异常的包名也暗示,它来自java.lang包,而javax.faces不是javax.servlet包,否则会使其确实是一个与 JSF/JSP(Servlet) 相关的问题。

我想说的另一个不相关的说明是,自大约 3 年前的 JSF 2.0 以来,JSP 已被弃用。也许您正在阅读过时的 JSF 1.x 目标资源?至于学习 JSF,我建议阅读最新的教程。您可以从我们的 JSF wiki 页面开始。

于 2013-01-12T16:29:46.697 回答