2013-01-12 77 views
1

可能重复:
can’t locate db4o database file产生的原因:抛出java.lang.ClassNotFoundException:com.db4o.ObjectContainer

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

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

的web内容包含一个JSP文件addClient.jsp包含形式与客户端必要的字段。 我将在faces-config.xml中将CRUDClient.java声明为Managed 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 

这是怎么造成的,我该如何解决呢?

+0

请不要[发表相同的问题2x](http://stackoverflow.com/q/14295646/1530938) – kolossus

回答

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)相关问题。

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

+0

非常感谢你,它现在正在工作。 – user1709976

+0

不客气。 – BalusC

相关问题