Используйте sql с java — компиляцией в .jar — «ClassNotFoundException com.mysql.jdbc.Driver»

#java #sql #jar

#java #sql #jar

Вопрос:

Я хотел попробовать использовать SQL с Java, поэтому я скачал mysql-connector-java-5.1.18-bin.jar .

Я использую Eclipse, поэтому я зашел в Eclipse, Project -> Properties и добавил файлы jar.

Я также добавил следующее в свой путь к классу:

  1. C:UsersshahinDesktopmysql-connector-java-5.1.18commysqljdbc;
  2. C:UsersshahinDesktopmysql-connector-java-5.1.18mysql-connector-java-5.1.18-bin.jar;

Он отлично работает в Eclipse, но когда я запускаю свой. Файл Jar Я получаю эту ошибку:

 Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Main.main(Main.java:15)
 

Комментарии:

1. Что вы имеете в виду, «когда я запускаю свой файл jar»? Как вы его запускаете?

Ответ №1:

Ваш путь к классу для mysql .jar, скорее всего, отключен. Находится ли ваш jar рядом с jar mysql? (Если на него не указывают) Чтобы проверить это, вы можете поместить два в один каталог и посмотреть, выполняется ли он.

Ответ №2:

Это потому mysql-connector-java-5.1.18-bin.jar , что его нет в вашем пути к классу при запуске jar.

Внутри вашего .jar файла должен быть META-INF/MANIFEST.MF файл. Вам нужна запись в этом файле для вашего пути к классу, которая указывает, где mysql-connector-java-5.1.18-bin.jar находится файл:

 Class-Path: path/to/mysql-connector-java-5.1.18-bin.jar
 

Обратите внимание, что это может быть локальным для вашего jar. Обычный способ сделать это — создать lib подкаталог, в котором находится ваш jar, содержащий другие jar, от которых зависит ваш:

 Class-Path: lib/mysql-connector-java-5.1.18-bin.jar
 

Комментарии:

1. Если у меня есть это в моем jar, как это будет выглядеть? ../the-jar-file.jar ?

2. У вас не может быть этого в вашем jar.

3. Ну, для полноты картины вам это не нужно , вам просто нужно убедиться, что он указан в пути к классу при выполнении. Это один из способов сделать это. (И если он не распространяется, не уверен, что он лучший, но это уже другой разговор 🙂

4. Если кто-то еще хочет запустить его, я должен поместить jar и mysql… jar в папку? Это отстой

5. Ну, это было странно.. Когда я добавляю Class-Path: в свой файл манифеста, он выдает сообщение «Не удается найти основной класс «Main»….. Если я не включу путь к классу в файл манифеста, в нем будет указано ClassNotFound com.mysql.Driver