723. 2024-06-13 09:00 采纳率: 25%
浏览 26

Springboot打包jar运行找不到数据库,请求不到数据该怎么办?

Springboot在IDEA运行没有问题,但是打包jar后在本地终端java -jar就无法访问数据库请求数据了
这是我的applocation.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://47.93.153.170:3306/ren?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL
    username: ren
    password: 123456789
  web:
    resources:
      static-locations: classpath:/templates/, classpath:/static/

我的application.properyies

spring.application.name=demo

打包在本地java -jar 报错:提示MyBatis映射器未找到和Spring Data JPA仓库未找到

2024-06-14 17:06:50.588  INFO 29408 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2024-06-14 17:06:51.246  WARN 29408 --- [           main] o.m.s.mapper.ClassPathMapperScanner      : No MyBatis mapper was found in '[com.example.demo]' package. Please check your configuration.
2024-06-14 17:06:51.336  INFO 29408 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2024-06-14 17:06:51.358  INFO 29408 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 7 ms. Found 0 JPA repository interfaces.
2024-06-14 17:06:51.491  WARN 29408 --- [           main] o.m.s.mapper.ClassPathMapperScanner      : No MyBatis mapper was found in '[com.example.demo]' package. Please check your configuration.

我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.1</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
            <version>2.7.18</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.30</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <version>2.7.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.7.18</version>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.7.18</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.0</version>
            </plugin>
        </plugins>
    </build>
    <packaging>jar</packaging>
</project>

我IDEA上无论连的自己本地库还是云服务宝塔上面的公网都可以,就是内网不行,但是应该接公网就可以吧?我该怎么解决?

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 09:00
    关注

    引自免费微信小程序:皆我百晓生

    面对Spring Boot应用在IDE环境下正常运行,但打包成JAR后无法访问数据库的问题,可以从以下几个方面进行排查和解决:

    1. 确认数据库连接信息

    确保application.yml中的数据库连接信息(URL、用户名、密码)是正确的,并且在打包成JAR后这些配置依然有效。有时候,IDE可能会使用不同的配置文件,比如application-dev.yml,而打包后的JAR可能只读取application.yml

    2. 检查依赖

    确认JAR包中包含了所有必要的依赖。这包括数据库驱动和其他任何与数据库相关的依赖。可以检查Maven或Gradle的pom.xmlbuild.gradle文件,确保相关依赖已添加并且正确打包。

    例如,在Maven的pom.xml中,确保有如下依赖:

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>
        <!-- 添加Spring Boot Starter Data JPA -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>
    

    3. 配置文件加载路径

    当使用Spring Boot的spring-boot:repackage插件将项目打成一个可执行的JAR时,应用会自动查找application.propertiesapplication.yml文件。确保这些文件位于JAR的/BOOT-INF/classes/目录下,或者使用spring.config.location属性指定它们的位置。

    4. 环境变量或系统属性

    如果在IDE中运行时使用了环境变量或系统属性来覆盖配置文件中的某些设置,打包成JAR后需要以同样的方式传递这些变量。例如,可以通过命令行参数传递:

    java -jar your-app.jar --spring.datasource.url=jdbc:mysql://your-db-url
    

    5. 日志级别

    增加日志输出的详细程度,以便更好地诊断问题。在application.yml中添加或修改日志配置:

    logging:
      level:
        org.springframework.data.jpa: DEBUG
        com.zaxxer.hikari: DEBUG
    

    6. 检查防火墙和安全组

    如果数据库位于远程服务器,确保服务器的防火墙规则和安全组允许从你的本地机器上的JAR应用访问。这通常涉及到开放特定端口和IP地址。

    7. 网络可达性测试

    直接从运行JAR的机器ping或telnet到数据库服务器的IP和端口,以确认网络连接是否正常。

    8. 检查错误日志

    最后,仔细阅读应用的日志文件,特别是启动时的输出,寻找关于数据库连接失败的具体错误信息。这通常能提供解决问题的关键线索。

    通过以上步骤,你应该能够定位并解决Spring Boot应用在打包成JAR后无法访问数据库的问题。如果仍然遇到困难,建议查阅更详细的文档或在开发者社区寻求帮助。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 6月14日
  • 创建了问题 6月13日

悬赏问题

  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
  • ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework