Java Class.forName(com.ibm.db2.jcc.DB2Driver)不在Liberty8.5中工作

Java Class.forName(com.ibm.db2.jcc.DB2Driver)不在Liberty8.5中工作,java,jdbc,classnotfoundexception,websphere-liberty,dbconnection,Java,Jdbc,Classnotfoundexception,Websphere Liberty,Dbconnection,我正在尝试将当前在WebSphere8.0中运行的应用程序配置为WebSphereLiberty。此应用程序正在使用以下命令创建jdbc连接: Driver DB2Driver = (java.sql.Driver) Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); 这在WebSphereFullProfile中工作得非常好。但不是在自由中。我尝试创建一个指向“C:/sqllib/java”目录的库,该目录包

我正在尝试将当前在WebSphere8.0中运行的应用程序配置为WebSphereLiberty。此应用程序正在使用以下命令创建jdbc连接:

Driver DB2Driver = (java.sql.Driver) Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
这在WebSphereFullProfile中工作得非常好。但不是在自由中。我尝试创建一个指向“C:/sqllib/java”目录的库,该目录包含db2java.zip。但它仍然不起作用。我得到的错误是:

[err] java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
[err]     at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:403)
[err]     at [internal classes] 
请帮忙


提前感谢,

您指向了错误的归档文件,那个是旧驱动程序的归档文件。您需要在server.xml中这样定义它:

<library id="DB2JCC4Lib">
    <fileset dir="C:/sqllib/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
</library>

我还建议使用数据源而不是驱动程序:

<dataSource id="db2" jndiName="jdbc/db2">
    <jdbcDriver libraryRef="DB2JCC4Lib"/>
    <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000"/>
</dataSource>

如果你需要司机看。简言之:

[…]您需要添加一个

<classloader commonLibraryRef="DB2JCC4Lib" />

到server.xml中的


自2005年以来,您就不需要这一行代码,除非IBM在实现JDBC4方面进展缓慢。他们现在肯定已经做到了。把它拿走。他们可能更改了驱动程序类名,但由于JDBC4,它会自动注册自己,并在您使用DB2JDBCURL时被找到,所以他们可能将其更改为什么并不重要。