繁体   English   中英

“引起:java.lang.ClassNotFoundException:javax.servlet.ServletConfig”运行Spring引导程序时

[英]"Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletConfig" when running Spring Boot program

我正在使用 Spring Boot 2.7.3 和 java 11.0.16 和我 package 并使用 spring-booter-undertow 库运行我的项目。

pom.xml

...

<dependencies>
    <!-- Web Dependencies -->
    <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>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-undertow</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.rajansoft</groupId>
        <artifactId>service</artifactId>
        <version>${project.version}</version>
    </dependency>

    <!-- Commons Dependencies -->
    <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>1.7</version>
    </dependency>
</dependencies>
...

但是在运行项目时出现以下错误:

java.lang.IllegalStateException: Failed to introspect Class [org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@77556fd]
    at org.springframework.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:743) ~[spring-core-5.3.22.jar:5.3.22]
    at org.springframework.util.ReflectionUtils.findField(ReflectionUtils.java:611) ~[spring-core-5.3.22.jar:5.3.22]
    at org.springframework.boot.devtools.restart.ClassLoaderFilesResourcePatternResolver.retrieveResourceLoader(ClassLoaderFilesResourcePatternResolver.java:81) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
    at org.springframework.boot.devtools.restart.ClassLoaderFilesResourcePatternResolver.<init>(ClassLoaderFilesResourcePatternResolver.java:77) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
    at org.springframework.boot.devtools.restart.Restarter.prepare(Restarter.java:442) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
    at org.springframework.boot.devtools.restart.Restarter.prepare(Restarter.java:430) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
    at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationPreparedEvent(RestartApplicationListener.java:100) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
    at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:53) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.22.jar:5.3.22]
    at org.springframework.boot.context.event.EventPublishingRunListener.contextLoaded(EventPublishingRunListener.java:103) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$contextLoaded$4(SpringApplicationRunListeners.java:74) ~[spring-boot-2.7.3.jar:2.7.3]
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) ~[na:na]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplicationRunListeners.contextLoaded(SpringApplicationRunListeners.java:74) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:401) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.3.jar:2.7.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.3.jar:2.7.3]
    at com.rajansoft.systeminfo.main.SystemInfoServiceApplication.main(SystemInfoServiceApplication.java:21) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.7.3.jar:2.7.3]
Caused by: java.lang.NoClassDefFoundError: Ljavax/servlet/ServletConfig;
    at java.base/java.lang.Class.getDeclaredFields0(Native Method) ~[na:na]
    at java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3061) ~[na:na]
    at java.base/java.lang.Class.getDeclaredFields(Class.java:2248) ~[na:na]
    at org.springframework.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:738) ~[spring-core-5.3.22.jar:5.3.22]
    ... 27 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletConfig
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
    ... 31 common frames omitted

Disconnected from the target VM, address: '127.0.0.1:60389', transport: 'socket'

Process finished with exit code 0

如果我使用默认的 spring-boot-starter-tomcat,则不会引发错误,并且项目运行时不会出现任何错误。 我用谷歌搜索了很多这个问题,但无法解决问题。 谁能指导我?

尝试将此附加依赖项作为依赖项节点中的第一个依赖项:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.3</version>
    
</dependency>

它通常是 spring-boot-starter-tomcat 的瞬态依赖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM