У меня есть проект в 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 правильно, но я просто пытаюсь пройти мимо класса, который не найден.
Вот шаги, которые я предпринял для импорта фляг:
В результате в моем файле.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. Что я делаю не так? Любая помощь высоко ценится!
после добавления jar в web-inf/lib. постройте банки, затем выполните следующий шаг
Щелкните правой кнопкой мыши по проекту ---> выберите "свойства" → "Установка развертывания" → "ДОБАВИТЬ" - выберите "java build path entries" → выберите путь для c3p0 jar
** sandanke
просто добавьте эту зависимость в свой pom.xml:
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
Вам нужно поместить эти банки в папку WEB-INF/lib
или добавить в модуль в JBoss.
Проще всего добавить эти банки в WEB-INF/lib
и попробовать.
WEB-INF/lib
.
Все упомянутые три банки копируются и помещаются внутри общей папки lib jboss и пытаются, она будет работать. Как только она решит эту проблему, вы можете проверить проблему загрузчика класса.