как добавить эти файлы (*. jar) в classpath? Без какой-либо IDE - PullRequest
1 голос
/ 27 марта 2020

Я новичок ie с java. В настоящее время я работаю над JDB C и сталкиваюсь со многими проблемами, но многие из них решены.

Для этой проблемы я добавляю файлы .jar (ucanacces version 5.0.0) в мою папку, где находится мой JdbcEx. java файл и ( .accdb) размещены. Когда я компилирую свой файл. java, я сталкиваюсь с ошибкой

java .land.ClassNotFoundException: net .ucanacces.jdb c .UcanaccessDriver

Когда я компилирую. java файл с
D:\java coding\Lecture 14>java -cp D:\java coding\Lecture 14;D:\java coding\Lecture 14\libucanaccess-5.0.0.jar;D:\java coding\Lecture 14\lib\commons-lang3-3.8.1.jar;D:\java coding\Lecture 14\lib\hsqldb-2.5.0.jar;D:\java coding\Lecture 14\lib\jackcess-3.0.1.jar Lecture 14

Я получаю ошибку

Ошибка: не удалось найти или загрузить кодирование основного класса \ Лекция Причина: java .lang.ClassNotFoundException: кодирование \ Лекция

Как это исправить?

import java.sql.*;
public class JdbcEx{
   public static void main( String args[ ] ){
  try{

      Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
      String url = "jdbc:ucanaccess://D:/java coding/Lecture 14/lib/PersonInfo.accdb";
      Connection con = null;
      con = DriverManager.getConnection(url);
      Statement st = con.createStatement();
      String sql = "SELECT * FROM person";
      ResultSet rs = st.executeQuery(sql);
      while(rs.next()){
          String name = rs.getString("pName");
          String add = rs.getString("address");
          String ph = rs.getString("phoneNum");
          System.out.println(name + "  " + add + "  " + ph);
     }
     con.close();
   }catch(Exception sqlExp){
          System.out.println(sqlExp);
          sqlExp.printStackTrace();
   }
   }
}

1 Ответ

0 голосов
/ 28 марта 2020

Проблема в пути ваших банок. Способ, которым команда запрашивает / обрабатывает команды обработки, означает, что обычно пробел указывает следующий параметр командной строки. Чтобы избежать этого, вам нужно заключить весь список путей к классам после -cp в двойные кавычки, ie:

java -cp "D:\java coding\Lecture 14;D:\java coding\Lecture 14\lib\ucanaccess-5.0.0.jar;D:\java coding\Lecture 14\lib\commons-lang3-3.8.1.jar;D:\java coding\Lecture 14\lib\hsqldb-2.5.0.jar;D:\java coding\Lecture 14\lib\jackcess-3.0.1.jar" Lecture 14

Однако было бы легче избежать пробелов в все пути, и, например, используйте каталоги JavaCoding и Lecture14.

Если вы выполняете из каталога D:\java coding\Lecture 14, вы также можете использовать относительные пути:

java -cp .;lib\ucanaccess-5.0.0.jar;lib\commons-lang3-3.8.1.jar;lib\hsqldb-2.5.0.jar;lib\jackcess-3.0.1.jar Lecture 14

Поскольку в пути нет пробелов, двойные кавычки не нужны

Кстати: вы можете еще больше упростить путь к классам, используя подстановочный знак:

java -cp ".;lib\*" Lecture 14

...