我的第一个Springboot应用程序无法启动

时间:2016-06-24 15:24:53

标签: java spring intellij-idea

我正在尝试构建一个简单的springboot应用程序。 这是我的类控制器“HelloController.java”:

package controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController

public class HelloController {

    @RequestMapping("/")
    public String index()
    {
       return "Welcome to Spring Boot";
    }

}

主要类“Application.java”

    package hello;

import org.joda.time.LocalTime;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        LocalTime currentTime = new LocalTime();
        System.out.println( greeter.sayHello() );               
        System.out.println( "The current local time is: " + currentTime );
        SpringApplication.run(Application.class, args);

    }
}

和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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-maven</artifactId>
    <!--packaging>jar</packaging-->
    <version>0.1.0</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.2</version>
        </dependency>

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

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.2</version>
                    <executions>
                        <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                            <configuration>
                                <transformers>
                                    <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>hello.Application</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>

            </plugin>

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


</project>

这是使用IntelliJ从应用程序返回的堆栈跟踪:

2016-06-24 17:12:27.754  INFO 4072 --- [           main] hello.Application                        : Starting Application on WIN-PNSVSNOEM58 with PID 4072 (C:\Users\NICOLA\git\javaprojects\spring-base\target\classes started by NICOLA in C:\Users\NICOLA\git\javaprojects\spring-base)
2016-06-24 17:12:27.777  INFO 4072 --- [           main] hello.Application                        : No active profile set, falling back to default profiles: default
2016-06-24 17:12:28.330  INFO 4072 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7ce026d3: startup date [Fri Jun 24 17:12:28 CEST 2016]; root of context hierarchy
2016-06-24 17:12:39.844  INFO 4072 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-06-24 17:12:39.880  INFO 4072 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2016-06-24 17:12:39.883  INFO 4072 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.33
2016-06-24 17:12:40.885  INFO 4072 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2016-06-24 17:12:40.886  INFO 4072 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 12671 ms
2016-06-24 17:12:42.090  INFO 4072 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2016-06-24 17:12:42.101  INFO 4072 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2016-06-24 17:12:42.102  INFO 4072 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2016-06-24 17:12:42.102  INFO 4072 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2016-06-24 17:12:42.103  INFO 4072 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
2016-06-24 17:12:43.195  INFO 4072 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7ce026d3: startup date [Fri Jun 24 17:12:28 CEST 2016]; root of context hierarchy
2016-06-24 17:12:43.565  INFO 4072 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-06-24 17:12:43.568  INFO 4072 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-06-24 17:12:43.671  INFO 4072 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-06-24 17:12:43.672  INFO 4072 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-06-24 17:12:44.182  INFO 4072 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-06-24 17:12:46.558  INFO 4072 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2016-06-24 17:12:46.783  INFO 4072 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-06-24 17:12:46.795  INFO 4072 --- [           main] hello.Application                        : Started Application in 21.875 seconds (JVM running for 28.272)

当我使用mvn命令启动应用程序时返回此错误:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.138 s
[INFO] Finished at: 2016-06-24T16:47:12+02:00
[INFO] Final Memory: 17M/40M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.2:shade (default) on project gs-maven: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:2.2:shade for parameter resource: Cannot find 'resource' in class org.apache.maven.plugins.shade.resource.ManifestResourceTransformer -> [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

2 个答案:

答案 0 :(得分:1)

如果删除整个maven shade插件部分应该可以工作。看起来你并没有声明任何条目在那里被覆盖。然后maven构建应该正常工作,你应该能够部署产生的工件。

此外,看起来你在官方文档中的插件中使用略有不同的语法,特别是主类:

<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    <manifestEntries>
        <Main-Class>${app.main.class}</Main-Class>
        <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>
        <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>
     </manifestEntries>
</transformer>
  

https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ManifestResourceTransformer

答案 1 :(得分:0)

确定, 我从pox.xml中删除了maven插件阴影但我没有解决问题。 无论如何,我在spring.io网站上尝试这个例子:

[https://spring.io/guides/gs/maven/]

并且pom.xml文件使用此插件。 我不明白maven的目标是什么&#34;阴影&#34;在这个简单的例子中插入它的主要动机是为了在localhost中显示问候:8080。 关于它,当我插入网址

[http://localhost:8080/]

它给了我一个404 http状态代码。