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

时间:2013-01-12 16:27:25

标签: java db4o managed-bean

  

可能重复:
  can’t locate db4o database file

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

  1. com.crud.bean包含CRUDClient.java
  2. com.crud.entities包含DB4O实体Client.java
  3. webContent包含一个JSP文件addClient.jsp,其中包含一个包含客户端必填字段的表单。 我将CRUDClient.java声明为faces-config.xml中的托管bean,以在JSP文件中使用其函数和属性。

    但是当我运行项目时,我收到以下错误

    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
    

    这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:3)

  

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

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

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


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

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