ClassNotFoundException для проекта Eclipse, выполняющего сервер JBoss 7 с использованием C3P0

1

У меня есть проект в Eclipse, который использует сервер JBoss. Я пытаюсь изменить мой менеджер баз данных, чтобы использовать C3P0. Однако, независимо от того, что я пробовал, я не могу правильно импортировать файлы jar.

Вот ошибка, которую я получаю:

javax.ejb.EJBException: Unexpected Error
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:157)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:213)
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:284)
    ...
Caused by: java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/ComboPooledDataSource
    at com.softified.irw.common.DatabaseManager.<init>(DatabaseManager.java:24)
    at com.softified.irw.common.DatabaseManager.getDataSource(DatabaseManager.java:35)
    ...
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.c3p0.ComboPooledDataSource from [Module "deployment.irw-ear.ear:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:361)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:333)
    ...

Здесь часть моего кода, которая пытается ссылаться на банку:

import com.mchange.v2.c3p0.ComboPooledDataSource;


public class DatabaseManager {
    private static ComboPooledDataSource cpds = null;
    private static DataSource dataSource = null;
    private static Connection connection = null;
    private DatabaseManager(String clientName) {
        try {
            cpds = new ComboPooledDataSource();
            cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
            cpds.setJdbcUrl("java:jboss/datasources/" + clientName+"DS");
        } catch (Exception e) {
            // Handle error that it not configured in JNDI.
            throw new RuntimeException("Client "+clientName + " datasource configuration is missing in JNDI!", e);
        }
    }

Я знаю, что я, вероятно, не использую c3p0 правильно, но я просто пытаюсь пройти мимо класса, который не найден.

Вот шаги, которые я предпринял для импорта фляг:

  1. Загруженные библиотеки c3p0 отсюда: http://sourceforge.net/projects/c3p0/?source=dlp
  2. Создал папку "lib" в проекте, ссылаясь на библиотеку, и скопировал в нее следующие файлы из загрузки c3p0:
    • c3p0-0.9.5-pre8.jar
    • mchange-Обще-ява-0.2.7.jar
    • c3p0-oracle-thin-extras-0.9.5-pre8.jar (я знаю, что мне, вероятно, не нужен этот, но я добавил его в любом случае)
  3. Щелкните правой кнопкой мыши на каждой банке в Eclipse и нажмите "Путь сборки> Добавить в путь сборки".
  4. Все три банки теперь отображаются в моих "Библиотеках библиотек",

В результате в моем файле.classpath есть следующее:

<classpathentry kind="lib" path="lib/c3p0-0.9.5-pre8.jar" sourcepath="lib/c3p0-0.9.5-pre8-sources.jar"/>
<classpathentry kind="lib" path="lib/c3p0-oracle-thin-extras-0.9.5-pre8.jar"/>
<classpathentry kind="lib" path="lib/mchange-commons-java-0.2.7.jar" sourcepath="lib/mchange-commons-java-0.2.7-sources.jar"/>

Я получаю такое же сообщение об ошибке, когда пытаюсь получить доступ к соответствующей части моего кода. Он не может найти файлы класса c3p0. Что я делаю не так? Любая помощь высоко ценится!

  • 0
    Вы проверяли EAR? этот jar существует в lib?
Теги:
jboss7.x
c3p0

4 ответа

0

после добавления jar в web-inf/lib. постройте банки, затем выполните следующий шаг

Щелкните правой кнопкой мыши по проекту ---> выберите "свойства" → "Установка развертывания" → "ДОБАВИТЬ" - выберите "java build path entries" → выберите путь для c3p0 jar

** sandanke

0

просто добавьте эту зависимость в свой pom.xml:

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>
0

Вам нужно поместить эти банки в папку WEB-INF/lib или добавить в модуль в JBoss.

Проще всего добавить эти банки в WEB-INF/lib и попробовать.

  • 0
    Я использую JBoss AS 7, который, я думаю, не поддерживает просто добавление jar-файлов в lib, поэтому я пытаюсь создать глобальный модуль, но это также несколько сбивает с толку.
  • 0
    Это не совсем так. JBoss AS 7 определенно будет поддерживать добавление библиотек в каталог WEB-INF/lib .
0

Все упомянутые три банки копируются и помещаются внутри общей папки lib jboss и пытаются, она будет работать. Как только она решит эту проблему, вы можете проверить проблему загрузчика класса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню