修改
我现在只使用spring工作了几个星期,我可以创建一些基本的应用程序。我正在开发一个基于rest api的应用程序,hibernate使用maven构建系统连接到mysql。我正在使用IntelliJ Idea进行开发和制作工件。我正在尝试制作包含嵌入式tomcat的单个.jar文件,我可以通过运行该文件来部署它。
问题
在IDE中,一切运行正常并且正常运行。当我创建可执行文件.jar并尝试使用java -jar运行它时,没有任何作用。
CODE
https://github.com/YoungPetr/fitapp
但基本上只是稍加修改https://github.com/netgloo/spring-boot-samples/tree/master/spring-boot-mysql-springdatajpa-hibernate
进步
第一个问题:它说我缺少嵌入式servlet容器工厂bean,我修复了添加:
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory factory =
new TomcatEmbeddedServletContainerFactory();
return factory;
}
然后第二个问题:我的crud存储库接口(自动装配为bean)未找到,我必须使用@EnableJpaRepositories(“com.youngpetr.fitapp.server.repositories”)< / p>
概要
请注意,整个应用程序在IDE中都可以运行但只有.jar有问题。
修复第二个问题后,我基本上陷入了无限循环的缺失配置,当我修复一个时,另一个出现。缺少实体管理器bean,缺少会话工厂bean ...
我在构建项目时遗漏了什么。怎么可能在IDE中配置好所有东西并找到bean,jar无法找到它们。
我已经使用了几个教程,甚至尝试从它们运行代码并出现同样的问题。
我的pom.xml看起来类似于
<!-- GLOBAL PROPERTIES AND SETTINGS -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<start-class>com.youngpetr.fitapp.server.Main</start-class>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- BUILD SETTINGS -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- DEPENDENCIES -->
<dependencies>
<!-- SPRING BOOT -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- MYSQL DRIVER -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.2</version>
</dependency>
</dependencies>
SUGGESTION
当我尝试另一个不使用springboot但只使用标准弹簧的基本教程时,使用main方法执行并关闭,即使使用内置jar,一切都很好。
我想我创建.jar的方式可能存在问题,可能在Spring引导配置中,因为在IDE中我没有错误。
切换到.war会帮助我吗?
感谢您的帮助
答案 0 :(得分:1)
好的,在搜索了大量不适用的不同问题之后,因为它看起来我的代码没问题,所以我查看了jar创建过程。
我一直在创建jar来运行intellij idea函数来创建工件,标准程序,来自带有依赖项的模块,链接主类,添加配置文件和所有东西。
我不知道那里发生了什么,但是当我尝试从命令行手动从一开始就运行所有内容(基本上只是一些maven和java命令)时,我设法创建了一个完全不同的jar并且那个运行正常。
我仍然不知道为什么IDE工件不起作用并且会感谢任何评论,以便遇到此问题的人可以在这里学到一些东西。
非常感谢所有给我一点点提示我应该和不应该寻找问题的人 - Ravindra Devadiga,Andy Wilkinson,甚至是M. Deinum
答案 1 :(得分:0)
我已经下载了您的代码库并创建了名称为 fitapp 的数据库,如您所述。之后我发现的一个问题是无法创建与数据库服务器的连接。
我发现你在pom.xml中提到的 mysql-connector-java 版本导致了这个问题。
现在,我更新了pom,如下所示(删除了版本标签),它对我来说很好用
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
确保在更改pom.xml
后更新了maven依赖项