Как правильно экспортировать SQLJDBC в JAR в Intellij? - PullRequest
0 голосов
/ 23 сентября 2019

Я устанавливаю соединитель SQL для моего плагина Bukkit, но всякий раз, когда я компилирую в файл JAR и пытаюсь запустить с сервера, я получаю

java.sql.SQLEXCEPTION: Нет подходящего драйверанайдено.

Я пытался добавить в строку

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Всякий раз, когда я ставлю это, я получаю

SQLEXCEPTION: com.microsoft.sqlserver.jdbc.SQLServerDriver

Эта проблема возникает, только когда я помещаю ее в файл JAR, а не когда я тестирую ее в своей IDE.

В настоящее время я использую Intellij.

Это мои текущие настройки Jar: https://gyazo.com/94341b7bb47121a0416deaee6279dd30

 public ConnectionUtils(String url, String us, String pa) throws SQLException
    {
        SQLServerDriver dr = new SQLServerDriver();
        user = us;
        pass = pa;
        con = DriverManager.getConnection(url, us, pa);
        isConnected = true;
        this.url = url;
    }

1 Ответ

2 голосов
/ 23 сентября 2019

Решение с использованием структуры проекта

Помимо использования maven, вы можете посмотреть на свою структуру проекта в IntelliJ и проверить свои зависимости.Убедитесь, что рядом с этим флажком установлен флажок «export».


Решение Maven

Я рекомендую использовать maven для обработки ваших зависимостей, так как вы можете определить область зависимости, какобъяснил здесь .

Для зависимости JDBC вы можете использовать следующее объявление зависимости в вашем pom:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>

Это унаследует область по умолчанию, которая, как указанов статье, компилируется.

3.1.Компилировать

Это область по умолчанию, когда не предоставляется другая область.

Зависимости с этой областью доступны в пути к классам проекта во всех задачах сборки и распространяются на зависимые проекты..


Манифест

Кажется, некоторые люди в сети говорят именно об этой проблеме, и решение @Bohemian упомянуто для обеспечения того, чтобы требуемый класс был упакован сбанкаОднако это решение работает только в том случае, если вы выполняете jar из командной строки, что не относится к плагинам spigot.Я предлагаю создать файл MANIFEST.txt и включить туда путь к классу драйвера, как это предложил Теренс Гроновски из CodeRanch

Создание файла Manifest.txt со следующим содержимым в папке программы:

Manifest-Version: 1.0 Class-Path: sqljdbc4.jar Основной класс: ParkplatzVerwaltung (Newline)

Не забудьте закончить новой строкой.Важным является «Class-Path: sqljdbc4.jar», показывающий, где находится драйвер.

Источник: https://coderanch.com/t/529484/databases/Jdbc-driver-putting-application-jar

...