Spring Boot .JAR无法运行(maven,intellij,hibernate ......)

时间:2016-09-13 23:37:07

标签: spring hibernate maven intellij-idea spring-boot

修改

我现在只使用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会帮助我吗?

感谢您的帮助

2 个答案:

答案 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依赖项