Консольное приложение не работает с MySQL соединителем, в IDE оно работает - PullRequest
1 голос
/ 22 июня 2019

Итак, у меня есть программа, предназначенная для запуска с терминала, который должен подключаться к серверу mysql локально на компьютере, на котором она запущена. Однако существует конфликт, когда коннектор также рассматривается как основная программа (я думаю). выдает эту ошибку при запуске из терминала:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at nu.educom.dbInsert.MySqlConn.getConn(MySqlConn.java:25)
    at nu.educom.dbInsert.ConsoleApp.start(ConsoleApp.java:56)
    at nu.educom.dbInsert.Main.main(Main.java:13)

Я пытался сделать мой манифест так:

    Manifest-Version: 1.0
    Main-Class: nu.educom.dbInsert.Main
    Class-Path: lib/mysql-connector-java-5.1.22.jar

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

Параметры, указанные при запуске из терминала, используются для подключения к локальному серверу mysql. Все решения, которые я нашел на SO, касаются работы в IDE. Я нашел один очень устаревший пост на каком-то другом сайте, предлагающий указать путь к классам в манифесте Я не знаю, что именно положить туда, хотя это даже то, что мне нужно.

команда для запуска программы в терминале:

dbInsert -p:**** -u:root -d:products empty.csv

где dbInsert - псевдоним:

dbInsert="cd ~/desktop/projects/java/dbInsert/out/production/dbInsert/; java nu/educom/dbInsert/Main"

...