Java Class.forName(com.ibm.db2.jcc.DB2Driver)不在Liberty8.5中工作
我正在尝试将当前在WebSphere8.0中运行的应用程序配置为WebSphereLiberty。此应用程序正在使用以下命令创建jdbc连接: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”目录的库,该目录包
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时被找到,所以他们可能将其更改为什么并不重要。