Java Класс не найден при использовании библиотеки DB2 - PullRequest
0 голосов
/ 28 февраля 2020

Я пытался заставить мою программу работать, но продолжаю получать сообщение java .lang.ClassNotFoundException.

Я использую Eclipse 2019 на Windows и у меня установлен JDK 1.8. Когда я запускаю программу из меню Run Eclipse, она работает нормально. Но после экспорта JAR и запуска из CLI, это исключение. Я включаю драйвер DB2 в проект, так как эту программу планируется запустить на другом компьютере.

    public static void main(String[] args) {
        Properties prop = new Properties();
        Connection connection = null;

        // Load the properties from the resource
        try {
            InputStream inputStream = WebsiteUpdater.class.getClassLoader().getResourceAsStream("database.properties");
            prop.load(inputStream);
            inputStream.close();
        } catch (IOException ex) {
            System.out.println("Failed to load properties file from resources");
            ex.printStackTrace();
            return;
        }

        // Connect to the database
        try {
            Class.forName("com.ibm.db2.jcc.DB2Driver");
        }
        catch(ClassNotFoundException cnfex) {
            // THIS IS THE EXCEPTION THAT IS THROWN
            System.out.println("Problem in loading or registering IBM DB2 JDBC driver");
            cnfex.printStackTrace();
            return;
        }

        try {
            connection = DriverManager.getConnection(
                    "jdbc:db2://" + prop.getProperty("database.server") + ":" + prop.getProperty("database.port") + "/" + prop.getProperty("database.dbname"),
                    prop.getProperty("database.user"),
                    prop.getProperty("database.password"));
        } catch (SQLException e1) {
            System.out.println("Failed to get connection");
            e1.printStackTrace();
            return;
        }

        // Close and exit
        try {
            connection.close();
        } catch (SQLException e) {
            System.out.println("Failed to close connection");
            e.printStackTrace();
        }
        System.out.println("Program completed");
    }

Я создал папку с именем libs и поместил туда файлы.

Project folders

Затем я добавил пути к классам:

Project class paths

Как я уже сказал, программа работает в Eclipse. , но из командной строки я получаю:

Problem in loading or registering IBM DB2 JDBC driver
java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
        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 net.mydomain.MyApp.main(MyApp.java:50)

1 Ответ

0 голосов
/ 28 февраля 2020

Ваш cmd должен выглядеть примерно так:

java -cp json-simple-1.1.1.jar;db2jcc_license_cisuz.jar;db2jcc_license_cu.jar;db2jcc4.jar;<yourapplication.jar> net.mydomain.MyApp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...