#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
Я уже пробовал следовать, но получил ту же ошибку:
- Изменение версии Spring boot и ojdbc
- Скачал банку ojdbc8 и добавил ее в качестве системного пути
Может кто-нибудь, пожалуйста, помочь в этом.
Ответ №1:
У вас, должно быть, есть какая-то старая jar-банка ojdbc выпуска в вашем пути к классу, попробуйте удалить все старые jar-банки jdbc выпуска и обновить до jar ojdbc8. Это должно решить проблему.
Комментарии:
1. Спасибо @Saurabh verma, Нашел одну старую банку ojdbc14 в jre/lib/ext, из-за которой это не работало.