Java PostgreSQL-Quartz JDBC JobStoreTX-getTriggersForJob-ArrayIndexOutOfBoundsException

Java PostgreSQL-Quartz JDBC JobStoreTX-getTriggersForJob-ArrayIndexOutOfBoundsException,java,postgresql,jdbc,quartz-scheduler,Java,Postgresql,Jdbc,Quartz Scheduler,DB:PostgreSQL 9.2 托管:Openshift 配置: org.quartz.scheduler.instanceName = OneTimeJob org.quartz.threadPool.threadCount = 3 org.quartz.jobStore.useProperties = true org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.thr

DB:PostgreSQL 9.2

托管:Openshift

配置:

org.quartz.scheduler.instanceName = OneTimeJob
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.useProperties = true

org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

org.quartz.jobStore.misfireThreshold: 60000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = Name

org.quartz.dataSource.Name.connectionProvider.class = com.name.scheduler.DBConnectionProvider
堆栈跟踪:

以下故障引发了SQLException: java.lang.ArrayIndexOutOfBoundsException位于 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)位于 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)位于 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62)位于 com.mchange.v2.c3p0.impl.NewPooledConnection.handleThrowable(NewPooledConnection.java:369) 在 com.mchange.v2.c3p0.impl.NewProxyResultSet.getBytes(NewProxyResultSet.java:2795) 在 org.quartz.impl.jdbcjobstore.postgresqldegate.getJobDataFromBlob(postgresqldegate.java:88) 在 org.quartz.impl.jdbjobstore.StdJDBCDelegate.getMapFromProperties(StdJDBCDelegate.java:881) 在 org.quartz.impl.jdbjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:1778) 在 org.quartz.impl.jdbjobstore.StdJDBCDelegate.selectTriggersForJob(StdJDBCDelegate.java:1704) 在 org.quartz.impl.jdbcjobstore.JobStoreSupport.getTriggersForJob(JobStoreSupport.java:2141)

原因:java.lang.ArrayIndexOutOfBoundsException:2处 org.postgresql.util.PGbytea.toBytes(PGbytea.java:76)位于 org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2271) 在 org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2451) 在 com.mchange.v2.c3p0.impl.NewProxyResultSet.getBytes(NewProxyResultSet.java:2781)

PS:适用于postgres 9.4

此JIRA具有相同的堆栈跟踪,它表示这是一个过时的驱动程序

如果您尝试使用最新版本的PostgreSQL jdbc驱动程序,可能会包括来自
org.PostgreSQL
groupId的依赖项,
logback
依赖于旧版本的驱动程序,并将
postgres
作为groupId,因此您在应用程序中包括这两个依赖项

请尝试通过以下方式排除旧jdbc版本:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
    <exclusions>
        <exclusion>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </exclusion>
    </exclusions>
</dependency>

回写
回归经典
1.1.3
postgresql
postgresql
并告诉我们此exlcusion是否能使您的应用程序正常运行


希望有帮助

SQLException包装了ArrayIndexOutOfBoundsException。你能显示包装异常的堆栈跟踪吗(
e.getCause().printStackTrace()
)@wero添加了有问题的堆栈跟踪。@RajdeepSiddhapura:标题有误导性,这与Quartz有什么关系?是否“与postgres 9.4一起工作”意味着它与9.4驱动程序和9.4数据库一起工作?如果是的话,你试过9.2数据库上的9.4驱动程序了吗?@a_horse_和_no_name我试过“postgres 9.4驱动程序”,但仍然不起作用。我也在使用具有“postgres 8.4”依赖性的。这会成为一个问题吗?不客气,我很乐意帮助和寻找赏金;)