1

重複の可能性:
db4o データベース ファイルが見つかりません

DB4O と JSF を使用して単純な CRUD アプリケーションを作成しようとしています。私の Web プロジェクトには、次の 2 つのパッケージがあります。

  1. com.crud.beanを含むCRUDClient.java
  2. com.crud.entitiesDB4O エンティティーを含むClient.java

webContent にはaddClient.jsp、クライアントが必要とするフィールドを含むフォームを含む 1 つの JSP ファイルが含まれています。JSP ファイルでその関数と属性を使用するためにCRUDClient.javaマネージド Bean として宣言します。faces-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 ファイル) がランタイム クラスパスにないことを意味します。パッケージ名は、JAR ファイルのフレーバーで通常提供される DB4O クラスであることを示唆しています。

Web アプリケーションのデフォルトのランタイム クラスパスは、特に Web アプリケーションの/WEB-INF/libフォルダをカバーします。したがって、DB4O JAR ファイルをそこにドロップし、再構築/再デプロイ/再起動することを確認すると、この例外は表示されなくなります。


この問題は JSF/JSP とは無関係であることに注意してください。それは単なる基本的なJavaです。例外のパッケージ名は、それがパッケージからではなく、java.langパッケージからのものであることも示唆しています。そうでなければ、実際に JSF/JSP(サーブレット) 関連の問題になります。javax.facesjavax.servlet

私が作りたい別の無関係なメモは、約3年前のJSF 2.0以降、JSPが非推奨になったことです。おそらく、古い JSF 1.x 対象のリソースを読んでいたのでしょうか? JSF の学習に関しては、最新のチュートリアルを読むことをお勧めします。JSF wiki ページから開始できます。

于 2013-01-12T16:29:46.697 に答える