Исключение: oracle.jdbc.драйвер.T4CConnection.isValid(I)Z При попытке доступа к Oracle с помощью Spring Boot

#spring-boot #oracle11g #spring-data-jpa #spring-data #ojdbc

Вопрос:

Я пытаюсь запустить пример jpa-приложения spring boot с использованием oracle 11g xe. Я получаю ошибку: java.lang.Ошибка абстрактного метода: oracle.jdbc.драйвер.T4CConnection.isValid(I)Z.

Я использую следующее:
Java 8
Oracle xe 11.2.0
Spring 2.4.0

Ниже приведено несколько фрагментов кода и подробностей:

POM.xml

 lt;parentgt;  lt;groupIdgt;org.springframework.bootlt;/groupIdgt;  lt;artifactIdgt;spring-boot-starter-parentlt;/artifactIdgt;  lt;versiongt;2.4.0lt;/versiongt;  lt;relativePath/gt; lt;!-- lookup parent from repository --gt; lt;/parentgt;  lt;propertiesgt;  lt;java.versiongt;1.8lt;/java.versiongt; lt;/propertiesgt; lt;dependenciesgt;  lt;dependencygt;  lt;groupIdgt;com.oracle.database.jdbclt;/groupIdgt;  lt;artifactIdgt;ojdbc8lt;/artifactIdgt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.projectlomboklt;/groupIdgt;  lt;artifactIdgt;lomboklt;/artifactIdgt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.springframework.bootlt;/groupIdgt;  lt;artifactIdgt;spring-boot-starter-data-jdbclt;/artifactIdgt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.springframework.bootlt;/groupIdgt;  lt;artifactIdgt;spring-boot-starter-data-jpalt;/artifactIdgt;  lt;/dependencygt; lt;/dependenciesgt;  

Применение.свойства

 spring.datasource.url=jdbc:oracle:thin:@voided-pc:1521:xe spring.datasource.username=local spring.datasource.password=oracle spring.datasource.driverClassName=oracle.jdbc.OracleDriver  spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect  

Основной Класс

 @SpringBootApplication public class OracleApplication implements CommandLineRunner{    @Autowired  private JdbcTemplate jdbc;   public static void main(String[] args) {  SpringApplication.run(OracleApplication.class, args);  }   @Override  public void run(String... args) throws Exception {    String sql = "select * from emp";  Listlt;Empgt; res = jdbc.query(sql, BeanPropertyRowMapper.newInstance(Emp.class));  System.out.println(res);  }  }  

DTO

 @Entity @Table(name = "Emp") @Getter @Setter public class Emp implements Serializable{   private static final long serialVersionUID = -8048548873630679159L;    @Id  @Column(name = "EMPNO", unique = true, nullable = false)  private Long empNo;    @Column(name = "ENAME")  private String eName;    @Column(name = "JOB")  private String job;    @Column(name = "MGR")  private Long mgr;    @Column(name = "HIREDATE")  private Date hireDate;    @Column(name = "SAL")  private Double sal;    @Column(name = "COMM")  private Double comm;    @Column(name = "DEPTNO")  private Integer deptNo; }  

Oracle Details

 C:Usersnewgt;lsnrctl status  LSNRCTL for 64-bit Windows: Version 11.2.0.2.0 - Production on 29-OCT-2021 02:06:23  Copyright (c) 1991, 2014, Oracle. All rights reserved.  Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 64-bit Windows: Version 11.2.0.2.0 - Production Start Date 28-OCT-2021 23:47:50 Uptime 0 days 2 hr. 18 min. 33 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File C:oraclexeapporacleproduct11.2.0servernetworkadminlistener.ora Listener Log File C:oraclexeapporaclediagtnslsnrvoided-pclisteneralertlog.xml Listening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1ipc)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=voided-pc)(PORT=1521)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=voided-pc)(PORT=8080))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "CLRExtProc" has 1 instance(s).  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "PLSExtProc" has 1 instance(s).  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XEXDB" has 1 instance(s).  Instance "xe", status READY, has 1 handler(s) for this service... Service "xe" has 1 instance(s).  Instance "xe", status READY, has 1 handler(s) for this service... The command completed successfully  

Я уже пробовал следовать, но получил ту же ошибку:

  1. Изменение версии Spring boot и ojdbc
  2. Скачал банку ojdbc8 и добавил ее в качестве системного пути

Может кто-нибудь, пожалуйста, помочь в этом.

Ответ №1:

У вас, должно быть, есть какая-то старая jar-банка ojdbc выпуска в вашем пути к классу, попробуйте удалить все старые jar-банки jdbc выпуска и обновить до jar ojdbc8. Это должно решить проблему.

Комментарии:

1. Спасибо @Saurabh verma, Нашел одну старую банку ojdbc14 в jre/lib/ext, из-за которой это не работало.