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

Spring BootJava9个模块Intellij Communications icaty Edn: Run配置与jar和mvn的行为不同

韩彬
2023-03-14

我正在尝试使用JPA和H2嵌入式db学习Spring Boot。我创建了一个repo,它复制了我在github上可用的问题。它基于教程;在此处找到源。

我的最终状态是使用以下所有方法将其作为单个模块项目运行:

  • mvn spring boot:运行
  • 在Intellij中从目标运行jar
  • 在Intellij中运行main()方法

目前main()方法与其他两种方法有所不同,但我不知道为什么。

如果我删除module-info.java文件,那么所有方法都退出0。我知道我可以忽略它,但我正在尝试学习这里,所以我想知道发生了什么。

Intellij构建信息:

IntelliJ IDEA 2020.3.2(社区版)Build#IC-203.7148.57,建于2021年1月26日

设置了jdk 15,但没有模块信息。java:

  • 以Intellij运行配置。退出代码为0。
  • 使用mvn spring-boot运行:运行。退出代码为0。
  • 运行jar。退出代码为0。

添加以下模块信息。java文件到/src/main/java:

module demo {
    exports com.example.accessingdatajpa;
    opens com.example.accessingdatajpa;

    requires org.slf4j;
    requires spring.boot;
    requires spring.boot.autoconfigure;
    requires spring.context;
    requires spring.data.commons;
    requires java.persistence;
    requires java.sql;
}

通过在intellij中运行main()运行应用程序并获取出口1:

C. E. A. AccessingDataJpaApplication:启动AccessingDataJpaApplication使用Java15.0.2 on...

c. e. a. AccessingDataJpaApplication:没有活动配置文件集,返回到默认配置文件:默认

.s.d.r.c.RepositoryConfigurationDelegate:在默认模式下引导Spring数据JPA存储库。

.s.d.r.c.RepositoryConfigurationDelegate:在166毫秒内完成Spring数据存储库扫描。找到1个JPA存储库接口。

o、 s.j.d.e.EmbeddedDatabaseFactory:启动嵌入式数据库:url='jdbc:h2:mem:3cb47b25-69e1-4122-bc0f-69447d509171;DB\U CLOSE\U DELAY=-1;DB\u CLOSE\u ON\u EXIT=false',username='sa'

s、 c.a.AnnotationConfigApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:

组织。springframework。豆子。工厂BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中定义:调用init方法失败;嵌套的异常是javax。坚持不懈PersistenceException:无法解析持久性单元根URL

o、 s.j.d.e.EmbeddedDatabaseFactory:关闭嵌入式数据库:url='jdbc:h2:mem:3cb47b25-69e1-4122-bc0f-69447d509171;DB\U CLOSE\U DELAY=-1;DB\u CLOSE\u ON\u EXIT=false'

以jar或mvn spring boot运行:运行并获取退出代码0:

。。。c、 e.a.AccessingDataJPAA应用程序:开始访问DataJPAA应用程序v0。0.1—在……上使用Java 15.0.2进行快照。。。c、 e.a.AccessingDataJPA应用程序:无活动配置文件集,正在下降

......... d. r. c.存储库配置委托:以DEFAULT模式引导Spring Data JPA存储库。

......... d. r. c. RepositoryConfiguration委托:在126毫秒内完成Spring数据存储库扫描。找到1个JPA存储库接口。

...com.zaxxer.hikari.HikariDataSource: HikariPool-1-开始。

...o.hibernate.jpa.internal.util.LogHelper:HHH000204:处理PeristenceUnitInfo[名称:默认]

任何帮助都将不胜感激。

共有1个答案

何海
2023-03-14

我发现我的module-info.java文件中缺少以下要求语句。现在run, mvn spring-boot: run和run jar的行为方式相同。

requires java.xml.bind; 
requires net.bytebuddy; 
requires com.fasterxml.classmate;

我仍然不知道为什么run main()需要这个,而不是其他两种方法。我相信这与hibernate有关,因为我在添加java后看到了以下异常。xml。绑定

BeanCreationException(实体管理工厂-

看起来我需要在模块信息中明确指定可传递依赖项。java,如果所使用的依赖项的模块声明需要传递,我想我就不必这样做了。

还有java。xml。bind正在读取javax。现在从两个来源激活并显示为错误。其中一个来自spring boot starter测试,尽管它在我的测试范围内。随着我了解更多,我将更新此答案。

 类似资料:
  • 我有一个java应用程序与maven具有以下结构: 我已经在父pom中配置了PMD和checkstyle。xml。对于PMD,规则集的配置如下所示,对于父模块和子模块都可以正常工作: 但是,对于检查样式,如果我以同样的方式配置配置位置,它将在父级或子级中失败。我必须使用自定义属性来克服这一点。 这是一个复制样本-https://github.com/ramtech123/pocs/blob/mas

  • 包括和配置模块 某些模块只能用于特定功能。 pap模块就是这样,仅用于身份验证。 相反,sql模块可用于授权,会话检查以及记帐。 这完全取决于模块作者所包含的功能。 sql模块(rlm_sql.so)使用子模块。 这创建了一个抽象层。 根据主sql模块的配置方式,它将使用特定的子模块与某种类型的数据库进行交互。 子模块可用于连接MySQL(rml_sql_mysql.so),PostgreSQL(

  • 使用具有不同配置的一个模块 FreeRADIUS允许您使用具有各种配置的一个模块。 如前所述,如果您熟悉编程术语,则类似于具有不同实例的对象。 试一试 - 创建一个模块的多个实例 Isaac陷入困境。 他完全忘记了教授的帐户也会过期,他不想在回复信息中向教授讲学生语言。 是时候解决这个问题: 编辑FreeRADIUS配置目录下modules子目录中的expiration文件。 更改以下行: #re

  • 是否可以为我的多模块maven项目的每个模块生成单独的jar文件。我的项目结构 应用程序模块具有main()方法。模块1和模块2具有由UI使用的RESTendpoint。目前,当我在应用程序模块上运行mvn包时,我得到了一个大的胖jar,其中包含所有Spring Boot依赖项以及每个模块1和模块2的依赖项。 相反,我想为module1和module2创建一个单独的jar文件。这样当我在modul

  • 一、简介 黄页模块的基本设置 二、基本设置 三、SEO设置 二、权限设置

  • SOFABoot 模块是一个普通的 Jar 包加上一些 SOFABoot 特有的配置,这些 SOFABoot 特有的配置,让一个 Jar 包能够被 SOFABoot 识别,使之具备模块化的能力。 一个完整的 SOFABoot 模块和一个普通的 Jar 包有两点区别: SOFABoot 模块包含一份 sofa-module.properties 文件,这份文件里面定义了 SOFABoot 模块的名称