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

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

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

我的application.properyies
spring.application.name=demo

然后本地报错:提示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上无论连的自己本地库还是云服务宝塔上面的公网都可以,就是内网不行,但是应该接公网就可以吧?我该怎么解决?

阅读 1.6k
avatarAI BotBETA

Spring Boot 应用程序在 IDEA 中运行正常,但打包成 JAR 后无法访问数据库的问题可能涉及多个方面。以下是一些排查和解决这个问题的建议:

  1. 检查数据库连接配置

    • 确保 application.yml 中的数据库连接配置是正确的,包括URL、用户名和密码。
    • 检查数据库服务器的网络设置,确保它允许来自运行 JAR 的机器的连接。
    • 如果使用云服务,确保已正确配置安全组或防火墙规则,以允许外部连接。
  2. 检查JAR包依赖

    • 确保打包时包含了所有必要的依赖,特别是数据库驱动。
    • 使用 Maven 或 Gradle 打包时,检查 pom.xmlbuild.gradle 文件,确保没有遗漏的依赖。
  3. 检查环境变量

    • 如果你的应用程序依赖外部环境变量或系统属性来配置数据库连接,确保这些变量或属性在运行 JAR 时也被正确设置。
  4. 日志分析

    • 分析 Spring Boot 应用程序的日志,查找与数据库连接相关的错误或警告信息。
    • 检查是否有连接超时、认证失败或其他连接问题。
  5. 数据库服务器状态

    • 确认数据库服务器正在运行并且可以接受连接。
    • 使用数据库管理工具(如 MySQL Workbench)尝试从运行 JAR 的机器连接到数据库,以排除网络问题。
  6. Spring Profiles

    • 如果你使用了 Spring Profiles 来区分不同的环境配置,确保在运行 JAR 时激活了正确的 Profile。
  7. 数据库URL格式

    • 确保数据库URL的格式正确,没有遗漏或错误的参数。
  8. 网络问题

    • 如果你的应用程序是在内网中运行,确保内网中的防火墙或安全策略没有阻止应用程序访问数据库服务器。

如果上述建议都无法解决问题,你可以尝试以下操作进行进一步排查:

  • 使用命令行工具测试数据库连接
    使用如 mysql 命令行工具或其他数据库客户端工具,从运行 JAR 的机器尝试连接到数据库,以验证网络连通性和认证信息。
  • 检查数据库驱动兼容性
    确保你使用的数据库驱动与你的数据库版本兼容。有时,新版本的数据库可能不再支持旧版本的驱动。
  • 查看Spring Boot版本
    确保你使用的Spring Boot版本与你的项目依赖兼容,并且没有已知的与数据库连接相关的问题。

最后,如果问题仍然无法解决,你可能需要提供更详细的日志信息或错误消息,以便进行更深入的分析和排查。

1 个回答

请展示具体错误日志,比较好分析

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题