Spring Boot: ไม่สามารถเริ่ม EmbeddedWebApplicationContext ได้เนื่องจากไม่พบ EmbeddedServletContainerFactory bean


173

ฉันยังใหม่กับสปริงโดยสิ้นเชิงและเริ่มทำคู่มืออย่างเป็นทางการจากเว็บไซต์นี้: https://spring.io/guides

ฉันต้องการทำคู่มือนี้: https://spring.io/guides/gs/scheduling-tasks/

ฉันได้รับข้อยกเว้นดังต่อไปนี้:

2014-02-14 16:25:21.614  INFO 9032 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.scheduling.annotation.SchedulingConfiguration' of type [class org.springframework.scheduling.annotation.SchedulingConfiguration$$EnhancerByCGLIB$$5b48d763] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2014-02-14 16:25:21.638  INFO 9032 --- [           main] .c.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/C:/work/Spring/SpringTutorial/target/classes/, file:/C:/work/apache-maven-3.0.3/repo/javax/servlet/javax.servlet-api/3.0.1/javax.servlet-api-3.0.1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter/1.0.0.RC1/spring-boot-starter-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot/1.0.0.RC1/spring-boot-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-context/4.0.0.RELEASE/spring-context-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-autoconfigure/1.0.0.RC1/spring-boot-autoconfigure-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter-logging/1.0.0.RC1/spring-boot-starter-logging-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/jul-to-slf4j/1.7.5/jul-to-slf4j-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/org/slf4j/log4j-over-slf4j/1.7.5/log4j-over-slf4j-1.7.5.jar, file:/C:/work/apache-maven-3.0.3/repo/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar, file:/C:/work/apache-maven-3.0.3/repo/ch/qos/logback/logback-core/1.0.13/logback-core-1.0.13.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter-web/1.0.0.RC1/spring-boot-starter-web-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/boot/spring-boot-starter-tomcat/1.0.0.RC1/spring-boot-starter-tomcat-1.0.0.RC1.jar, file:/C:/work/apache-maven-3.0.3/repo/org/apache/tomcat/embed/tomcat-embed-core/7.0.47/tomcat-embed-core-7.0.47.jar, file:/C:/work/apache-maven-3.0.3/repo/org/apache/tomcat/embed/tomcat-embed-logging-juli/7.0.47/tomcat-embed-logging-juli-7.0.47.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-web/4.0.0.RELEASE/spring-web-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-aop/4.0.0.RELEASE/spring-aop-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-beans/4.0.0.RELEASE/spring-beans-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-webmvc/4.0.0.RELEASE/spring-webmvc-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/org/springframework/spring-expression/4.0.0.RELEASE/spring-expression-4.0.0.RELEASE.jar, file:/C:/work/apache-maven-3.0.3/repo/com/fasterxml/jackson/core/jackson-databind/2.3.1/jackson-databind-2.3.1.jar, file:/C:/work/apache-maven-3.0.3/repo/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0.jar, file:/C:/work/apache-maven-3.0.3/repo/com/fasterxml/jackson/core/jackson-core/2.3.1/jackson-core-2.3.1.jar, file:/C:/work/apache-maven-3.0.3/repo/commons-lang/commons-lang/2.2/commons-lang-2.2.jar]
Exception in thread "main" 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:140)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:124)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:658)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:355)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:920)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:909)
    at hu.kumite.Application.main(Application.java:17)
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:190)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:163)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137)
    ... 7 more

คลาสเริ่มต้นของแอ็พพลิเคชันคือ:

@ComponentScan
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(ScheduledTasks.class, args);
    }
}

อย่างที่คุณเห็นวิธีการหลักมีเส้นความเห็น ฉันได้ทำกวดวิชาไปแล้วนั่นคือ: https://spring.io/guides/gs/consuming-rest/ มันทำงานแล้ว แต่ฉันไม่สามารถเรียกใช้แอป ScheduledTasks ซึ่งมีดังต่อไปนี้:

@EnableScheduling
public class ScheduledTasks {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        System.out.println("The time is now " + dateFormat.format(new Date()));
    }
}

ฉันใช้ Eclipse และเรียกใช้หลักของ Application.java เป็นแอปพลิเคชัน มีคนช่วยฉันหน่อยได้ไหม

คำตอบ:


66

คู่มือการตั้งเวลาไม่ใช่แอปพลิเคชันบนเว็บดังนั้นคุณอาจมีเนื้อหาที่น่าเบื่อใน pom.xml จากคู่มือ REST ใช่ไหม ถ้าคุณทำตามคำแนะนำอย่างใกล้ชิดมันควรจะทำงาน ปัญหาอื่นที่อาจเกิดขึ้นกับโค้ดที่คุณโพสต์ไว้ด้านบนคือ@EnableAutoConfigurationคลาสของคุณไม่ได้ใช้ในบริบทเป็นวิธีหลักเท่านั้น (ซึ่งอาจไม่เป็นปัญหาสำหรับคู่มือการจัดตารางเวลา แต่อาจเป็นเพราะคนอื่น ๆ


1
ฉันกำลังทำแบบฝึกหัดทั้งหมดให้เป็นโครงการ Eclipse ที่ลงท้ายด้วย pom ยักษ์หนึ่งอัน ฉันวางไว้ในโครงการแยกใช้ pom จากการสอนและตอนนี้มันทำงานได้อย่างสมบูรณ์ ขอบคุณสำหรับความช่วยเหลือของคุณ! จะเกิดอะไรขึ้นถ้าฉันต้องการตัวกำหนดตารางเวลาใน Spring webapp โดยใช้ API นี้ ฉันทำอย่างนั้นไม่ได้เหรอ?
Kumite

จากแหล่งที่คุณสามารถทำได้ แต่คุณจะต้องมีการพึ่งพาทั้งหมดสำหรับเว็บแอป
Dave Syer

1
แต่สุดท้ายฉันก็มีข้อยกเว้นที่คุณสามารถเห็นได้ในการเปิดด้าย ขอโทษฉันคิดว่าฉันพลาดอะไรบางอย่างไป ฉันควรโพสต์ pom.xml "ไม่ดี" ที่นี่หรือไม่
Kumite

1
Pom "ที่ดี" จะมี "spring-boot-starter-web" (เพื่อความสะดวก) หรืออย่างอื่นการอ้างอิงทั้งหมดที่รวมอยู่ในรายการเริ่มต้นที่แสดงเป็นรายบุคคล เพียงตรวจสอบว่าคุณมีพวกเขา นอกจากนี้ตรวจสอบให้แน่ใจว่าคุณใส่รหัส@EnableAutoConfigurationในไว้SpringApplication(ข้อมูลโค้ดด้านบนไม่ได้)
Dave Syer

6
ทำงานได้อย่างสมบูรณ์แบบฉันไม่สามารถขอบคุณมากพอ และเพื่อให้ได้ผลฉันต้องเพิ่มคลาสเพื่อให้ทำงานในอาเรย์ Object ในวิธีการเรียกใช้ของ SpringApplication:SpringApplication.run(new Object[]{Application.class, ScheduledTasks.class}, args);
Kumite

48

การสแกน@SpringBootApplicationรายการที่มีหมายเหตุประกอบต่อไปนี้:

@Configuration
@ComponentScan
@EnableAutoConfiguration

ดังนั้นคุณสามารถทำได้เช่นกัน:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
       SpringApplication.run(ScheduledTasks.class, args);
    }
}

29

ใช้อันนี้ใน pom.xml ของคุณ:

<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>
</dependency>

1
การเพิ่มโถ 2 ใบก็ใช้ได้สำหรับฉันด้วย ฉันต้องใช้ทั้งสองอย่าง
Fafore Tunde

1
@FaforeTunde มันไม่ใช่สัญญาณที่ดีลองดูแผนผังการพึ่งพาของคุณและตรวจสอบว่าคุณใช้แท็ก <scope> ในนั้นหรือไม่
มหาอำมาตย์ GR

27

ฉันมีหลายแอปพลิเคชันในโครงการ Spring Boot หนึ่งซึ่งรวมเว็บไว้และต้องการหลีกเลี่ยงการกำหนดค่าสภาพแวดล้อมทางเว็บสำหรับหนึ่งในนั้นดังนั้นฉันจึงกำหนดค่าด้วยตนเองดังนี้:

@SpringBootApplication
public class Application
{
    public static void main(String[] args)
    {
        new SpringApplicationBuilder(Application.class)
            .web(false)
            .run(args);
    }
}

อัปเดตสำหรับ Spring Boot 2 ขึ้นไป:

@SpringBootApplication
public class Application
{
    public static void main(String[] args)
    {
        new SpringApplicationBuilder(Application.class)
            .web(WebApplicationType.NONE)
            .run(args);
    }
}

23

ลองสิ่งนี้

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
       SpringApplication.run(ScheduledTasks.class, args);
    }
}

20

ข้อผิดพลาดแสดงให้เห็นว่าแอปพลิเคชันที่คุณพยายามเรียกใช้ไม่สามารถสร้างอินสแตนซ์ของ apache tomcat ได้ ตรวจสอบให้แน่ใจว่าคุณใช้แอพพลิเคชั่นด้วย tomcat

หากหลังจากตรวจสอบการอ้างอิงทั้งหมดที่คุณประสบปัญหาเดียวกันให้ลองเพิ่มสิ่งต่อไปนี้ในคลาสการกำหนดค่าของคุณ

@Bean
public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory factory = 
                  new TomcatEmbeddedServletContainerFactory();
    return factory;
 }

หากคุณกำลังใช้อินสแตนซ์ภายนอกของ Tomcat (โดยเฉพาะอย่างยิ่งสำหรับ Intellij) ปัญหาอาจเป็นได้ว่า IDE พยายามที่จะเริ่มต้น Tomcat ฝังตัว ในกรณีนี้ให้ลบสิ่งต่อไปนี้ออกจาก pom.xml ของคุณจากนั้นกำหนดค่า tomcat ภายนอกโดยใช้ตัวช่วยสร้าง 'แก้ไขการกำหนดค่า'

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <scope>provided</scope>
</dependency> 

2
คำตอบที่ดี! มันแก้ไขปัญหาของฉัน อย่างไรก็ตามมันทำงานใน intellij เมื่อฉันสร้างขวดโดยใช้ปลั๊กอินเฉดสี maven คลาสพา ธ เดียวกันถูกสร้างขึ้นดังนั้นฉันจึงไม่เข้าใจสิ่งที่เกิดขึ้นจริง
เด็กฝึกงาน


8

หากคุณพบข้อยกเว้นนี้ในขณะที่ใช้งาน Intellij และคุณพยายามเริ่มแอปพลิเคชันด้วยrunปุ่ม ลองเริ่มต้นแอปพลิเคชันจากบรรทัดคำสั่งแทน เช่นให้แน่ใจว่าคุณอยู่ในไดเรกทอรีที่ถูกต้อง (ไดเรกทอรีพร้อมไฟล์ pom ของคุณ) สมมติว่านี่เป็นspringbootแอปพลิเคชั่นที่รันmvn spring-boot:runนี่เป็นการหลอกลวงสำหรับฉัน

นอกจากนี้ฉันยังเห็นข้อผิดพลาดนี้เกิดขึ้นเมื่อแอปพลิเคชันสปริงของคุณขึ้นอยู่กับแอปพลิเคชันอื่น ในกรณีนี้ฉันต้องเริ่มต้นแอปพลิเคชันอื่นก่อนแล้วจึงเรียกใช้


1
การเริ่มต้นใหม่ IntelliJ (สุดยอด 2016.3 ที่นี่) แก้ไขให้ฉัน
mangusbrother

นอกเหนือจากการแก้ปัญหาที่ได้รับจากมาร์ควิสแล้วฉันแน่ใจว่าฉันเลือกเวอร์ชั่นที่ถูกต้องของชุดค่าผสม mvn และ jdk เพื่อเรียกใช้mvn spring-boot:run
lnarasimhan

6

การเพิ่มคำอธิบายประกอบ@SpringBootApplicationก่อนที่ชั้นเรียนเริ่มต้นจะแก้ไขปัญหานี้ให้ฉัน (ในสาระสำคัญข้อความแสดงข้อผิดพลาดนี้อาจหมายถึง "คุณไม่มี@SpringBootApplicationคลาสที่ทำเครื่องหมายเลยคุณต้องมีอย่างน้อยหนึ่งรายการ)

@SpringBootApplication
public class AppStarter {

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

4

ฉันมีปัญหาคล้ายกันเมื่อเมธอดหลักอยู่ในคลาสที่แตกต่างจากที่ส่งไปยัง SpringApplcation.run ()

ดังนั้นวิธีแก้ไขคือใช้บรรทัดที่คุณแสดงความคิดเห็นไว้:

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

3

หากคุณทำแพ็กเกจเป็นแบบขวดเดียวและไม่ใช่แอปพลิเคชันเว็บให้ลองโหลดบริบทของแอปดังต่อไปนี้

@SpringBootApplication

ApplicationContext ctx = new AnnotationConfigApplicationContext(Main.class);

หรือใช้ปลั๊กอินด้านล่างเพื่อแพ็คเกจเป็นขวดเดียว

             <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

คุณสามารถระบุการกำหนดค่าภายนอกโดยใช้คำสั่งด้านล่างเพื่อเรียกใช้

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

/ http://docs.spring.io/spring-boot/docs/current/reference/htmlboot-features-external-config.html#boot-features-external-config-application-property-files

โปรดทราบว่าหากคุณส่งคุณสมบัติเป็นอาร์กิวเมนต์อย่ารวม@PropertySource("classpath:test.properties")มันจะแทนที่พารามิเตอร์


การเพิ่ม spring-boot-maven-plugin และ <phase> แพ็คเกจ </phase> จากนั้นเรียกใช้แอปขณะที่แพ็คเกจ mvn clean ใช้งานได้สำหรับฉัน
hipokito

2

หากคุณเรียกใช้งานได้สำเร็จโดยใช้บรรทัดคำสั่งgradle bootRunในขณะที่บรรจุด้วยบรรทัดคำสั่งgradle jarไปยังไฟล์ jar เพื่อให้ทำงานด้วยบรรทัดคำสั่งjava -jar build/libs/demo.jarแต่น่าเสียดายที่มันล้มเหลวด้วยข้อยกเว้น: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory beanในกรณีนี้คุณต้องใช้งานbootRepackageของปลั๊กอิน gradle spring-bootเพื่อสร้างพิเศษ jar ที่วิ่งได้

  • การตั้งค่า 1

    $ gradle คลีนบูตแพคเกจใหม่

  • การตั้งค่า 2

    $ java -jar build / libs / demo.jar


ฉันไม่รู้ว่าทำไม แต่gradle clean bootRepackage ช่วยฉันด้วย ก่อนหน้านี้ฉันมีการล้างแคชและสร้างโฟลเดอร์ทั้งหมดด้วยตนเอง
Andrii Abramov

2

A SpringApplicationจะพยายามสร้างประเภทที่ถูกต้องApplicationContextในนามของคุณ โดยค่าเริ่มต้นAnnotationConfigApplicationContextหรือAnnotationConfigEmbeddedWebApplicationContextจะใช้ขึ้นอยู่กับว่าคุณกำลังพัฒนาโปรแกรมประยุกต์บนเว็บหรือไม่

อัลกอริทึมที่ใช้ในการกำหนด 'สภาพแวดล้อมเว็บ' นั้นค่อนข้างง่าย (ขึ้นอยู่กับการมีอยู่ของคลาสไม่กี่คลาส) คุณสามารถใช้ได้setWebEnvironment(boolean webEnvironment)หากคุณต้องการแทนที่ค่าเริ่มต้น

นอกจากนี้ยังเป็นไปได้ที่จะควบคุมApplicationContextประเภทที่จะใช้โดยการโทรsetApplicationContextClass(…​)ชนิดที่จะนำมาใช้โดยการโทร

[เคล็ดลับ] บ่อยครั้งที่ต้องการโทรออกsetWebEnvironment(false)เมื่อใช้SpringApplicationในการทดสอบ JUnit


วิธีที่คุณใช้ setWebEnvironment เมื่อมีการสร้างแอพลิเคชันผ่านSpringApplication.run(Application.class, args);?
tgdavies

@tgdavies เห็นคำตอบของฉันด้านบนคุณสามารถใช้SpringApplicationBuilder
Robert Hunt

2

การเพิ่มการเริ่มต้นระบบสปริงเริ่มระบบแก้ไขข้อผิดพลาดของฉัน

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

สิ่งนี้จำเป็นถ้าคุณต้องการเริ่มต้น tomcat เป็นเซิร์ฟเวอร์ฝัง


2

ตรวจสอบว่า pom.xml ของคุณมีอยู่แล้ว

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>

ฉันมีปัญหาเช่นนี้; เพราะขาดการพึ่งพานี้


วิธีนี้ช่วยแก้ไขปัญหาของฉัน
lenhhoxung

1

ในกรณีของฉันเราได้เพิ่มคำอธิบายประกอบ @Profile ใหม่เพื่อไม่ให้คลาส TestApplication ในโหมดการผลิตและคลาส Application ในโหมดทดสอบ

น่าเสียดายที่เราลืมเพิ่มบรรทัดต่อไปนี้ในไฟล์ application.properties:

spring.profiles.active=test
or
spring.profiles.active=production

หากไม่มีการกำหนดค่าเหล่านี้จะไม่มีการโหลดโปรไฟล์ซึ่งทำให้เกิดข้อผิดพลาดในการสปริงมากขึ้น


ฉันต้องการเพิ่มว่าคุณสามารถได้รับข้อผิดพลาดนี้หากคุณให้คำอธิบายประกอบ @Profile และส่งโปรไฟล์ไปยัง jvm
บาง


1

ปัญหามันอยู่ในชั้นนี้:

@ComponentScan
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
    //SpringApplication.run(Application.class, args);
    SpringApplication.run(ScheduledTasks.class, args);
    }
}

วิธีที่ถูกต้องในการเปิดแอปพลิเคชันของคุณคือ:

@SpringBootApplication
@EnableScheduling
public class Application {
    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
}

1

ล้างที่เก็บเป็นทางออกหนึ่งที่เป็นไปได้

Windows -> ลบโฟลเดอร์ย่อยทั้งหมดในที่เก็บ maven:

C: \ Users \ YourUserName.m2 \ พื้นที่เก็บข้อมูล


สำหรับทุกคนที่ติดตาม PluralSight บน Java Spring นี่เป็นทางออกเดียวที่เหมาะกับฉัน!
Janac Meena

1

ฉันติดอยู่กับปัญหาเดียวกัน เนื่องจากฉันไม่ได้กำหนด Main.class และคำอธิบายประกอบต่อไปนี้ใน Spring-Boot โดยใช้ Maven:

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

0

ปัญหาคือการยกเว้นของ Tomcat เริ่มต้นฉันพยายามแยกมันและใช้ vert.x ดังนั้นเมื่อฉันรวมกับผู้ดูแลระบบสปริงด้วยปัญหาเริ่มต้น

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

0

ฉันมีข้อยกเว้นนี้ในสถานการณ์ต่อไปนี้

ใน POM ของฉันคือคุณสมบัติ:

<properties>
    <java.version>1.8</java.version>
    <!-- The main class to start by executing java -jar -->
    <start-class>com.scmaer.java.microservice.Application</start-class>
    <cxf.version>3.1.5</cxf.version>
    <olingo.version>2.0.10</olingo.version>
    <spring.boot.version>1.4.7.RELEASE</spring.boot.version>
    <spring.boot.plugin.version>1.5.8.RELEASE</spring.boot.plugin.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <skipTests>false</skipTests>
</properties>

และชื่อและเส้นทางของคลาสแอปพลิเคชันของฉัน ("เริ่มเรียน") ผิด


0

ฉันมีปัญหาที่คล้ายกันและปัญหาคือไฟล์ repo jar maven ที่หัก ในกรณีของฉันtomcat-embed-coreไฟล์ jar เสีย ดังนั้นฉันจึงลบมันออกจาก repo maven และรีเฟรชเพื่อดาวน์โหลดอีกครั้ง


] โปรดใช้เครื่องมือการจัดรูปแบบเพื่อแก้ไขและจัดรูปแบบคำตอบของคุณอย่างเหมาะสม
มอร์ส

0

ในกรณีของฉันมันเกิดขึ้นหลังจากไม่รวมโฟลเดอร์ทรัพยากรจากการpomใช้รหัสต่อไปนี้

<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>*/*.properties</exclude>
            </excludes>
        </resource>
</resources>

การแสดงความคิดเห็นรหัสนี้เริ่มรหัสของฉัน


0

สาเหตุอื่นของปัญหานี้คือความเสียหายของไห maven repository ดังนั้นคุณสามารถใช้คำสั่งต่อไปนี้เพื่อแก้ปัญหา:

mvn dependency:purge-local-repository

0

อาจเป็นไปได้ว่าคุณหายไป@SpringBootApplicationในระดับเริ่มต้นฤดูใบไม้ผลิของคุณ

@SpringBootApplication
public class LoginSecurityAppApplication {

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

}

0

ฉันกำลังใช้ gradle พบปัญหาเมื่อฉันมี commandLineRunner ใช้หัวข้อคาฟคาและจุดตรวจสุขภาพสำหรับการรับ hooks ที่เข้ามา ฉันใช้เวลา 12 ชั่วโมงคิดออกในที่สุดก็พบว่าฉันใช้ mybatis-spring-boot-starter กับ spring-boot-starter-web และพวกเขามีความขัดแย้งกันบ้าง ต่อมาฉันแนะนำ mybatis-spring, mybatis และ spring-jdbc โดยตรงแทนที่จะเป็น mybatis-spring-boot-starter และโปรแกรมทำงานได้ดี

หวังว่านี่จะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.