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

Spring Boot Project无法由IntelliJ IDE运行[重复]

周鸿运
2023-03-14

编辑:这是网络应用程序文件:

@SpringBootApplication
@EnableAsync
@EnableAutoConfiguration
public class WebApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WebApplication.class);
    }
}

我正在使用IntelliJ(15.0.2)运行一个spring boot项目,

当我执行< code > Java-jar spring-boot-sample . war 时,它工作正常。不幸的是,它无法通过IDE运行,并抱怨由于缺少EmbeddedServletContainerFactory bean而无法启动EmbeddedWebApplicationContext

错误详细信息如下:

[2016-07-25 12:32:46.979] boot - 5719 ERROR [restartedMain] --- SpringApplication: Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180)
    at com.rentacoder.WebApplication.main(WebApplication.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.java:185)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:158)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
    ... 13 more
[2016-07-25 12:32:47.014] boot - 5719  INFO [restartedMain] --- ClasspathLoggingApplicationListener: Application failed to start with classpath: [file:/Users/hzhang/work/workplace/IdeaProjects/RHS/target/classes/]

下面是POM文件中的依赖项设置:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</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-tomcat</artifactId>
            <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-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>

我在POM设置中错过了什么吗?

共有2个答案

施同
2023-03-14

您是如何在 IntelliJ 上设置配置的?由于它是一个 WAR 文件,因此需要有一个 Web 服务器容器。你的pom有Spring启动器-启动-雄猫,所以你需要创建一个雄猫服务器配置。这是IntelliJ中的付费功能,因此您可能无法在社区版中执行此操作。

一个解决方法是在你的war文件上创建一个远程调试:http://blog.trifork.com/2014/07/14/how-to-remotely-debug-application-running-on-tomcat-from-within-intellij-idea/

梁韬
2023-03-14

作为一种快速解决方法,您可以添加一个 jar 配置,该配置使用目标文件夹中生成的 jar。

通过这种方式,您可以正常启动应用程序或在调试模式下启动应用程序。

这种方法的一个缺点是:没有可用的热交换,只有在maven构建之后才能看到更改。但是在这种情况下,我通常会在前面的部分中添加一个带有“clean package-DskipTests”的maven目标的add-jar-run配置窗口,因此每次按下run,我都会有最新的可用更改。

这是一个快速修复;这个问题可以通过其他方式解决 - 我前几次做过,但我不记得确切的依赖关系是什么 - 你需要在Spring源代码中挖掘一点,并围绕异常跳出的方法进行一些调试

 类似资料:
  • 我是Spring world的新手,刚刚将pom.xml更新到gradle中来管理所有的依赖项。 格雷迪被社区抛弃了吗?还有,这个错误可能的根本原因是什么。 刚刚意识到Spring Boot有很多令人困惑的错误消息。我真的不认为这种错误消息对任何开发人员都有帮助。对这种错误有什么想法或方向吗? 我只知道我换了球。xml转换为gradle并手动迁移配置文件。非常感谢! 异常在线程"main"java

  • 所以,在过去的一个小时左右,我一直在研究这个邮件功能,但我不明白为什么它不发送电子邮件!我已经尝试过多次,修改代码并试图使其完美,但仍然没有收到测试电子邮件。。。 我的电子邮件中有HTML,但是,这不是问题所在,因为我已经在没有HTML的情况下对其进行了测试。 我的PHP: 请不要将此分类为重复,因为我已经测试了许多其他论坛关于此主题的问题,它们并没有解决我的问题!:( 谢谢 编辑:我在页面上的寄

  • 我按照http://maven.apache.org/download.cgi安装了maven,并创建了以下环境变量: 并且,我在PATH前面加上了这个: 当我尝试运行并输入时,它会说: 'mvn'无法识别为内部或外部命令、可操作程序或批处理文件。

  • 问题内容: 我正在尝试安装SonarQube:我已经遵​​循了以下步骤: 设置SOnarQube Tuto:此处 总结一下: 下载Sonar并将其移至 将这些coonfig步骤添加到 : sonar.jdbc.username =声纳sonar.jdbc.password =声纳 sonar.jdbc.url = jdbc:mysql:// localhost:3306 / sonar?useUn

  • 我有以下项目结构 我的文件夹在Intellij中标记为。

  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出 在这种情况下我该怎么办?