有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring引导类NotFoundException EmbeddedServletContainerCustomizer

我使用的是Spring Boot 1.5.9。当将应用程序打包为可执行war(布局为war)并运行它时,它只适用于mvn spring boot:run。 通过java-jar启动应用程序后,我会得到一个NullPointerException:

Exception in thread "main" java.lang.NoClassDefFoundError:     
org/springframework/boot/context/embedded/EmbeddedServletContainerCustomizer
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURL     ClassLoader.java:94)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at   org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59)
Caused by: java.lang.ClassNotFoundException:     org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 30 more

spring-boot-1.5.9。释放jar位于WEB-INF/lib中

非常感谢您的帮助

问候


共 (3) 个答案

  1. # 1 楼答案

    您必须添加redis依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
  2. # 2 楼答案

    非常感谢您的回复。我的pom中有这个插件。xml,但问题是我指定了

    <layout>WAR</layout>
    

    在我的pom里。当我把它改成

    <layout>ZIP</layout>
    

    成功了:)

  3. # 3 楼答案

    嗨,你能在你的pom中检查你的构建部分吗。xml。我使用下面提到的,并且能够在windows中运行:java-jar-myapp。罐子只需确保您正在创建一个可执行jar即可

    <build>
        <finalName>${artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>