OpenJDK 12与商业JDK 12:库未加载

时间:2019-10-10 07:06:50

标签: java dll shared-libraries

我使用Netbeans 11.1,并在此处运行了从here下载的商业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,应用程序不再工作,错误是“线程“主”中的异常” java.lang.NoClassDefFoundError:无法初始化类sap.jdbc4.sqlanywhere.IDriver”

相同的问题出现在OpenJDK 11上。 该应用程序使用JAR驱动程序和一些DLL来连接到该数据库,我认为OpenJDK做一些不同的事情,找不到这些库。 从图像中可以看到,JAR中肯定包含IDriver类。 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上,我有:

尝试(Connection con = DriverManager.getConnection(url,“ *******”,“ ******”)){

完整的项目在这里:http://cc123.caido.ro/SybaseTest64Bit.zip

0 个答案:

没有答案