尝试使用lauch web app时,Spring-boot-maven-plugin出错(Spring Vaadin)

时间:2018-03-21 19:44:31

标签: spring maven jpa spring-boot vaadin

你好,我是J2EE和网络应用程序的初学者,我尝试从春季开始使用简单的入门(使用vaadin制作我的用户界面)https://spring.io/guides/gs/crud-with-vaadin/

当我发出命令spring-boot:run时,我收到了以下错误:

    [INFO] --- spring-boot-maven-plugin:2.0.0.RELEASE:run (default-cli) @ SampleJPA_Vaadin ---
[WARNING] 
java.lang.NoClassDefFoundError: org/springframework/boot/CommandLineRunner
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:492)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.CommandLineRunner
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.456 s
[INFO] Finished at: 2018-03-21T20:41:09+01:00
[INFO] Final Memory: 23M/228M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.0.0.RELEASE:run (default-cli) on project SampleJPA_Vaadin: An exception occurred while running. org/springframework/boot/CommandLineRunner: org.springframework.boot.CommandLineRunner -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

在对网络进行了一些研究之后,它发现在编译过程之后,CommandLineRunner类并不在jar中。 但我对maven和编译网络应用程序的过程不太满意。 所以如果你能解释我或者只是给我一些解释链接,那就太棒了,谢谢。

这里也是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.metaverse</groupId>
    <artifactId>SampleJPA_Vaadin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SampleJPA_Vaadin</name>
    <description>Demo project for Spring Boot</description>

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <vaadin.version>8.3.1</vaadin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.vaadin</groupId>
            <artifactId>vaadin-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.vaadin</groupId>
                <artifactId>vaadin-bom</artifactId>
                <version>${vaadin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3 个答案:

答案 0 :(得分:0)

将以下内容添加到您的spring boot maven插件配置

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

这将允许您创建一个包含所有依赖项的可运行胖jar。你将摆脱这个问题

答案 1 :(得分:0)

看起来你在任何地方都没有spring-boot-starter依赖关系,或者你的vaadin依赖关系会过度忽略它。您应该明确地包含它(referenced by this example online):

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

答案 2 :(得分:0)

抱歉愚蠢的问题,你有一个类,其中包含public static void main :)?

我刚用你的pom创建了一个Project,它需要一个带有main方法的Class来运行。

如果你想在github上发布你的项目会有所帮助:)