我使用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类。
谢谢。
最新编辑:完整堆栈为
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,“ *******”,“ ******”)){