Quartz 1.8.5 + OpenLiberty 18.0.0.4/ Websphere Liberty 17.0.0.4 java.lang.NoClassDefFoundError: oracle/sql/BLOB
Quartz 1.8.5 + OpenLiberty 18.0.0.4/ Websphere Liberty 17.0.0.4 java.lang.NoClassDefFoundError: oracle/sql/BLOB
我们在使用 quartz 1.8.5 和 liberty 服务器时遇到以下异常。使用 tomcat-server (7.0.81) 时不会发生异常。
java.lang.NoClassDefFoundError: oracle/sql/BLOB
at org.quartz.impl.jdbcjobstore.oracle.OracleDelegate.writeDataToBlob(OracleDelegate.java:642)
at org.quartz.impl.jdbcjobstore.oracle.OracleDelegate.insertJobDetail(OracleDelegate.java:207)
pom.xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<!-- ASYNC-METHOD-INVOCATION -->
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-oracle</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.0.2.0</version>
<scope>provided</scope>
</dependency>
数据源
<server>
<library id="oracleDriver">
<fileset dir="..\sw\oracle" includes="*.jar" scanInterval="120s" />
</library>
<!-- xa datasource -->
<dataSource id="ORACLE_DS_XA" jndiName="jdbc/xxx/xxx" pool-name="xxx">
<jdbcDriver libraryRef="oracleDriver" javax.sql.ConnectionPoolDataSource="oracle.jdbc.xa.client.OracleXADataSource" />
<properties.oracle URL="jdbc:oracle:thin:@localhost:1521:sid" password="user" user="password" />
<connectionManager minPoolSize="1" maxPoolSize="10" />
</dataSource>
<keyStore id="defaultKeyStore" password="password" />
</server>
出现该异常的原因可能是什么?我们如何解决这个问题?
告诉我是否应该提供有关我们配置的更多信息。
TIA
我对两者都不熟悉,但是如果石英捆绑在您的应用程序中并且需要从您的 Oracle 驱动程序访问 类,那么您需要将共享库公开给您的应用程序。
您可以通过在 server.xml
中的 <application>
或 <webapplication>
块中添加一个 <classloader>
部分来做到这一点
例如
<application ...rest of your app configuration...>
<classloader commonLibraryRef="oracleDriver"/>
</application>
如果您当前通过将应用程序放在 dropins
目录中来部署应用程序,则必须更改它以将应用程序部署到 apps
目录并创建一个 <application>
或 <webApplication>
块在您的 server.xml.
文档链接:
Deploying an app and adding the server.xml configuration
Reference for <application>
element (includes classloader
as a sub-element)
Reference for <webApplication>
element (includes classloader
as a sub-element)
我们在使用 quartz 1.8.5 和 liberty 服务器时遇到以下异常。使用 tomcat-server (7.0.81) 时不会发生异常。
java.lang.NoClassDefFoundError: oracle/sql/BLOB
at org.quartz.impl.jdbcjobstore.oracle.OracleDelegate.writeDataToBlob(OracleDelegate.java:642)
at org.quartz.impl.jdbcjobstore.oracle.OracleDelegate.insertJobDetail(OracleDelegate.java:207)
pom.xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<!-- ASYNC-METHOD-INVOCATION -->
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-oracle</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.0.2.0</version>
<scope>provided</scope>
</dependency>
数据源
<server>
<library id="oracleDriver">
<fileset dir="..\sw\oracle" includes="*.jar" scanInterval="120s" />
</library>
<!-- xa datasource -->
<dataSource id="ORACLE_DS_XA" jndiName="jdbc/xxx/xxx" pool-name="xxx">
<jdbcDriver libraryRef="oracleDriver" javax.sql.ConnectionPoolDataSource="oracle.jdbc.xa.client.OracleXADataSource" />
<properties.oracle URL="jdbc:oracle:thin:@localhost:1521:sid" password="user" user="password" />
<connectionManager minPoolSize="1" maxPoolSize="10" />
</dataSource>
<keyStore id="defaultKeyStore" password="password" />
</server>
出现该异常的原因可能是什么?我们如何解决这个问题? 告诉我是否应该提供有关我们配置的更多信息。
TIA
我对两者都不熟悉,但是如果石英捆绑在您的应用程序中并且需要从您的 Oracle 驱动程序访问 类,那么您需要将共享库公开给您的应用程序。
您可以通过在 server.xml
<application>
或 <webapplication>
块中添加一个 <classloader>
部分来做到这一点
例如
<application ...rest of your app configuration...>
<classloader commonLibraryRef="oracleDriver"/>
</application>
如果您当前通过将应用程序放在 dropins
目录中来部署应用程序,则必须更改它以将应用程序部署到 apps
目录并创建一个 <application>
或 <webApplication>
块在您的 server.xml.
文档链接:
Deploying an app and adding the server.xml configuration
Reference for <application>
element (includes classloader
as a sub-element)
Reference for <webApplication>
element (includes classloader
as a sub-element)