OpenJDK 12 против коммерческого JDK 12: библиотеки не загружаются - PullRequest
0 голосов
/ 10 октября 2019

Я использую Netbeans 11.1, и я запустил код отсюда на коммерческом JDK12, загруженном с здесь

public static void main(String[] args) {
    try {
        String url = "jdbc:sqlanywhere:Host=192.168.88.100:3639;ServerName=premier;DatabaseName=smur";
        try (Connection con = DriverManager.getConnection(url, "*******", "******")) {
            String query = "select * from test";
            try (Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(query)) {
                while (rs.next()) {
                    int id = rs.getInt(1);
                    String denumire = rs.getString(2);
                    System.out.println(id + " " + denumire);
                }
            }
        }
    } catch (SQLException sqe) {
        System.out.println("Unexpected exception : " + sqe.toString() + ", sqlstate = " + sqe.getSQLState());
        Logger.getLogger(SybaseTest64Bit.class.getName()).log(Level.SEVERE, null, sqe);
    }
}

Тест в порядке, приложение подключается к базе данных и получаетданные. Но затем я переключился на OpenJDK12, и приложение больше не работает, ошибка «Исключение в потоке» main »java.lang.NoClassDefFoundError: Не удалось инициализировать класс sap.jdbc4.sqlanywhere.IDriver"

То же самоепроблема возникает в OpenJDK 11. Приложение использует драйвер JAR и несколько библиотек DLL для подключения к этой базе данных, и я думаю, что OpenJDK делает что-то другое и не может найти эти библиотеки. Класс IDriver определенно включен в JAR, как вы можете видеть на картинке. enter image description here

Спасибо.

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: полный стек

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sap.jdbc4.sqlanywhere.IDriver
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.sql/java.sql.DriverManager.isDriverAllowed(DriverManager.java:555)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:674)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at sybasetest64bit.SybaseTest64Bit.main(SybaseTest64Bit.java:12)

На SybaseTest64Bit.java:12 У меня есть:

try (Connection con = DriverManager.getConnection (url, "*******", "******")) {

Полный проект находится здесь: http://cc123.caido.ro/SybaseTest64Bit.zip

...