当前位置: 首页 > 知识库问答 >
问题:

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

子车修平
2024-06-13

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

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

共有2个答案

高经艺
2024-06-13

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

胡博艺
2024-06-13

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版本与你的项目依赖兼容,并且没有已知的与数据库连接相关的问题。

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

 类似资料:
  • 我试图在命令行中使用依赖项运行我的java类。我使用IntelliJ IDEA13从我的项目中构建工件。我有一个名为“main.java”的主类,在构建之后,我得到了一个类似MyTest.jar的jar文件。java的全限定名类似于“test.main” 但是当我试图使用“java mytest.jar”运行它时,它抱怨找不到主类mytest.jar。 ----Main.class --META-

  • 我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。 错误: 我试过编辑配置。所以我补充: 并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库

  • 我使用NetBeans的教程在java中创建了一个程序,它在Windows中运行得很好。但是,当我尝试运行相同的在Linux(RedHat)中,我遇到以下异常: 线程“main”java中出现异常。lang.UnsupportedClassVersionError:JVMCFRE003主版本错误;类=我的/数字编辑/数字编辑UI,偏移量=6 通过运行此命令: java-jar NumberAddi

  • 当我启动应用程序时,我得到一个错误,即找不到。 然后我把它添加到我的SpringBootApp中 并且找到,但没有找到。 存储库

  • 问题内容: 我在eclipse项目中创建了一个derby嵌入式数据库,它在eclipse上运行良好,但是当将该项目打包到Runnable jar文件中时,它无法连接数据库。 我已经完成了与此视频类似的操作 http://vinayakgarg.wordpress.com/2012/03/07/packaging-java- application-with-apache-derby-as-jar-

  • 问题内容: 它是Ajax JSP页面的一部分 Flat_No中总共有4个值,它在控制台和aftr中打印第一个值,这在我的jsp页面上出现错误“ java.sql.SQLException:找不到数据” 问题答案: 当通过较差的JDBC-ODBC桥驱动程序使用MSAccess数据库并从结果集中多次检索相同数据时,这是一个典型错误。您需要检索一次数据并将其分配给变量,然后多次使用该变量。 与 具体问题

  • 问题内容: 我有一个带有URL的H2数据库。我使用创建表格;。然后,我使用从(空)表中选择所有内容。到目前为止,一切都很好。 但是,如果将URL更改为,唯一的区别是数据库现在仅在内存中,这给了我一个提示。我可能在这里缺少一些简单的东西,但是任何帮助将不胜感激。 问题答案: hbm2ddl在创建表后关闭连接,因此h2放弃该连接。 如果你的连接网址是这样配置的 在最后一个连接关闭时,数据库的内容会丢失

  • 首先,这是我第一次使用Apache Derby。我正在使用netbeans,愿意使用嵌入式apache derby,并且我遵循了以下配置和安装数据库的教程 http://netbeans.org/kb/docs/ide/java-db.html#开始 我的数据库名称是“联系人”。表名为“Friends”。 下面是我的测试代码 DatabaseConnector.java DatabaseUI.ja