Я пытаюсь использовать mysql-коннектор в OSGi-Bundle для подключения к базе данных MySQL. К сожалению, я всегда получаю NoClassDefFoundError, когда пытаюсь получить драйвер базы данных в своем пакете.Коннектор MySQL в среде OSGi (Gradle): NoClassDefFoundError
Я уже сижу здесь в течение двух дней, ударяя головой о стену. Я попробовал все, что нашел (я знаю, что есть аналогичные вопросы в stackoverflow), но я полностью потерял его.
Проект - проект градиента, и я использую Intellij. Вот build.gradle расслоения:
defaultTasks 'clean', 'build'
apply plugin: 'java'
apply plugin: 'osgi'
apply plugin: 'maven'
sourceCompatibility = 1.6
targetCompatibility = 1.6
version = '0.0.1'
def bundleSymbolicName = 'at.my.test.drivers.mysqldb'
def bundleName = 'Driver - MySql Database Drive'
repositories {
mavenCentral()
}
configurations {
embed
}
dependencies {
compile group: 'org.osgi', name: 'org.osgi.core', version: '4.3.1'
compile group: 'org.osgi', name: 'org.osgi.compendium', version: '4.3.1'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.2'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.35'
embed group: 'mysql', name: 'mysql-connector-java', version: '5.1.35'
}
jar {
into('lib') {
from configurations.embed
}
}
jar {
manifest {
version = project.version.replace('-','.');
symbolicName = bundleSymbolicName
name = bundleName
instruction 'Bundle-ClassPath', '.,lib/mysql-connector-java-5.1.35.jar'
instruction 'Service-Component', 'OSGI-INF/components.xml'
}
}
для MySQL-разъем-Java-5.1.35.jar файл запускается корректно загружен Gradle и добавляется в качестве зависимости модуля:
Вот как я пытаюсь создать соединение с базой данных:
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
sqlConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","usr","pwd");
}
catch(Exception e) {
e.printStackTrace();
logger.error("unable to create database connection");
}
Когда я пытаюсь запустить модуль, я только получаю это исключение:
java.sql.SQLException: java.lang.NoClassDefFoundError: javax/naming/RefAddr
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:904)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:894)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:
, пожалуйста, помогите: (
Я уверен, что все это не нужно ... коннектор MySQL должен быть доступен в качестве OSGi расслоения уже. –
Теперь у меня есть тест 5.1.35-bin.jar, и да, это работает из коробки. Итак, шаги 1 и 2 не нужны ^ – Sepultura