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

使用Eclipse Tomcat运行Spring Boot

麹权
2023-03-14

我试图用Eclipse Tomcat启动Spring Boot,但失败了。

我正在使用带有以下插件的Eclipse

  • BuildShip Gradle集成2.0
  • Spring工具3附加3.9.6版本

我和Spring Boot一起创建了我的项目

  • 类型:gradle(BuildShip 2.x)
  • 包装:战争
  • Java版本:8
  • 语言:Java

这是我的构建:

buildscript {
    ext {
        springBootVersion = '2.1.0.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}


apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

group = 'heykj.web'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

configurations {
    providedRuntime
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
    //providedCompile "javax.servlet:javax.servlet-api:4.0.1"
}

这是我的应用程序类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class PlusFApplication extends SpringBootServletInitializer {

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

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

}

我的项目方面:

我不明白为什么这不起作用。我认为日食雄猫找不到主类。我添加了 servlet-api,但它不起作用。
我该如何解决?

很抱歉有一些打字错误,我错过了我的情况
首先,我知道Spring Boot嵌入了Tomcat
其次,我想从Eclipse Tomcat开始,而不是Spring Boot嵌入式Tomcat
谢谢!

11/09/2018
我试过了,但还是失败了…
build.gradle:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }

    compileOnly group: 'javax.servlet', name: 'servlet-api', version: '3.0.1'

}

Tomcat仍然找不到我的应用程序类,
我认为需要将servlet类添加到web.xml。

2018年11月9日- 2
build.gradle

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
        //compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.1.0.RELEASE'
    }
    testImplementation('org.springframework.boot:spring-boot-starter-test')
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

完全排除了springbootstart-tomcat,我添加了servleteapi
现在他们给了我错误。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

2018-11-09 17:10:34.138  INFO 8712 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication on DESKTOP-E0BBPVE with PID 8712 (C:\Users\knowch\eclipse-workspace\demo\bin\main started by knowch in C:\Users\knowch\eclipse-workspace\demo)
2018-11-09 17:10:34.142  INFO 8712 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2018-11-09 17:10:34.796  WARN 8712 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
2018-11-09 17:10:34.805  INFO 8712 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-11-09 17:10:34.814 ERROR 8712 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:155) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:540) ~[spring-context-5.1.2.RELEASE.jar:5.1.2.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at com.example.demo.DemoApplication.main(DemoApplication.java:17) [main/:na]
Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getWebServerFactory(ServletWebServerApplicationContext.java:204) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:178) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:152) ~[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]

我的结果是他们必须找到嵌入式雄猫,这不是一个选项。
这是雄猫网络服务器.class

   /**
     * Create a new {@link TomcatWebServer} instance.
     * @param tomcat the underlying Tomcat server
     */
    public TomcatWebServer(Tomcat tomcat) {
        this(tomcat, true);
    }

    /**
     * Create a new {@link TomcatWebServer} instance.
     * @param tomcat the underlying Tomcat server
     * @param autoStart if the server should be started
     */
    public TomcatWebServer(Tomcat tomcat, boolean autoStart) {
        Assert.notNull(tomcat, "Tomcat Server must not be null");
        this.tomcat = tomcat;
        this.autoStart = autoStart;
        initialize();
    }

在IDE工具中,我们不能使用eclipse tomcat?:(真是太悲伤了。。

共有1个答案

高夜洛
2023-03-14

Spring Boot有一个内置的Tomcat,它是作为Java可执行文件运行的。

只需右键单击PlusFApplication类,然后:

Run As -> Spring Boot App

Run As -> Java Application

你的类应该是这样的,Spring Boot会完成剩下的部分:

@SpringBootApplication
public class PlusFApplication {

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

如果您遇到问题,请先导入hello world示例并使其正常工作。

 类似资料:
  • 我试着用Java8编写代码。我用IDEA运行它。当我在云服务器上开发它时,它遇到了以下异常: -------更新------------------------------------------------------------------- 筛选方法详细信息

  • 使用 QEMU 运行内核 使用 OpenSBI 新版 QEMU 中内置了 OpenSBI 固件,它主要负责在操作系统运行前的硬件初始化和加载操作系统的功能。我们使用以下命令尝试运行一下: 运行输出 $ qemu-system-riscv64 \ --machine virt \ --nographic \ --bios default OpenSBI v0.6 ____

  • 问题内容: 我正在尝试使用NetBeans在Java Maven项目中实现Akka。当我从NetBeans运行它时,它运行良好,但是当我从NetBeans运行可运行的jar时,它会产生错误。 当我在配置中添加日志接收消息时,它要求其他配置。这是我用来生成jar文件的插件。 我的依赖是 akka的配置是 问题答案: 在http://doc.akka.io/docs/akka/snapshot/gen

  • 问题内容: 我创建了一个类,该类使用ProcessBuilder创建流程,然后启动流程 现在,当我在linux机器上运行该类时,它运行良好,但是在Windows上却给了我错误,指出未找到“ mvn”之类的东西,我需要更改为 但是,如果我在命令提示符“ mvn exec:java -Dexec.mainClass = FunnyClass”上运行命令,它将运行正常。那么,为什么我需要在process

  • 有人能帮忙吗 下面是错误,谢谢你的及时回复。 失败:testGooglePageTitleInIEBrowser java.lang.NullPointerException在IEProjects.TesteBrowser.testGooglePageTitleInIEBrowser(TesteBrowser.java:32)在Sun.Reflect.NativeMethodAccessorImp

  • What do you get when you play country music backwards? You get your girl back, your dog back, your pick-up back, and you stop drinking. — Louis Saaberda 重要的是要以正确的顺序做事情。 一个普遍的需求是应用一个特定的资源之前必须先应用它所依赖的所有

  • 我有一个Spring启动应用程序,需要: 可以在servlet容器中作为战争部署 通过“mvn Spring Boot:运行”可运行`` 我还希望通过右键单击并运行它,能够在我的IDE(Eclipse或IntelliJ IDEA社区)中运行此应用程序。 下面是我的pom.xml的有趣部分(注意,我不是从spring boot starter父pom继承的): 这是我的: 在IDE中运行main时,

  • 问题内容: 我试图做一个cron并每5分钟运行一个网址。 我尝试使用WGET,但是我不想在服务器上下载文件,我只想运行它即可。 这是我使用的(crontab): 除了wget之外,是否还有其他命令可以使用以运行url而不下载它? 问题答案: 您可以告诉wget不要以几种不同的方式下载内容: 这只会执行HEAD要求,但可能会做你想做的 这会将输出保存到/ dev / null(黑洞) 您可能也想看看