Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring中获取数据库路径时出错_Java_Spring_Spring Boot_Derby - Fatal编程技术网

Java 在Spring中获取数据库路径时出错

Java 在Spring中获取数据库路径时出错,java,spring,spring-boot,derby,Java,Spring,Spring Boot,Derby,我是Spring boot的新手,我正在编写一个代码,当我用postman的请求点击控制器时,它将获取到数据库的路径。但是我写的代码给我带来了一个错误。我写的代码是在谷歌上找到的。 我能得到一些帮助吗? 这是我的控制器代码: import org.apache.derby.client.am.SqlException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework

我是Spring boot的新手,我正在编写一个代码,当我用postman的请求点击控制器时,它将获取到数据库的路径。但是我写的代码给我带来了一个错误。我写的代码是在谷歌上找到的。 我能得到一些帮助吗? 这是我的控制器代码:

import org.apache.derby.client.am.SqlException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;

import javax.sql.DataSource;
import javax.validation.Valid;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.List;

@RestController
@RequestMapping("/createBackup")
public class UserController
{

    @Autowired
    private ApplicationContext appContext;

    @GetMapping("/getPath")
    public void getPath()
    {
        DataSource ds = (DataSource)appContext.getBean("dataSource");
        Connection conn = null;
        DatabaseMetaData dmd = null;
        String url = "";
        try
        {
            conn = ds.getConnection();
            dmd = conn.getMetaData();
            url = url + dmd.getURL();
        }
        catch(SQLException sqe)
        {
            sqe.printStackTrace();
        }
        System.out.println(url);
    }
}
我用邮递员点击这个控制器,得到我数据库的路径。现在我正在我的控制台上打印出来,但是这个错误让我很烦恼

服务开始得很好。但是当我用邮递员的请求点击这个控制器时,我得到了这个错误:

java.lang.AbstractMethodError: org.apache.derby.client.net.NetConnection.isValid(I)Z
    at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:454) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:421) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:374) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar:na]
...................................and on and on it goes..............................

derby驱动程序实现和JDBCAPI之间存在差异

这里回答了一个类似的问题:

如果可能,请使用最新版本的derby驱动程序,并结合最新版本的Spring boot。 下面是一个带有Spring boot/derby的简单Rest控制器示例:

请注意,如果希望从数据源获取信息,则更容易注入bean:

@Autowired
private Datasource ds;
而不是拿着它

DataSource ds = (DataSource)appContext.getBean("dataSource");