เปิดใช้งาน Spring application Address แล้ว


98

ฉันมีข้อผิดพลาดนี้ในการเปิดแอปพลิเคชัน Spring ของฉัน:

java -jar target/gs-serving-web-content-0.1.0.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::             (v0.5.0.M6)

2013-12-23 00:23:09.466  INFO 19252 --- [           main] hello.Application                        : Starting Application on mbp-de-antoine.home with PID 19252 (/Users/antoine/Documents/workspace-sts-3.4.0.RELEASE/springapp/target/gs-serving-web-content-0.1.0.jar started by antoine)
2013-12-23 00:23:09.511  INFO 19252 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@24024c39: startup date [Mon Dec 23 00:23:09 CET 2013]; root of context hierarchy
2013-12-23 00:23:10.910  INFO 19252 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2013-12-23 00:23:10.910  INFO 19252 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.42
2013-12-23 00:23:11.045  INFO 19252 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2013-12-23 00:23:11.046  INFO 19252 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1537 ms
2013-12-23 00:23:11.274  INFO 19252 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2013-12-23 00:23:11.274  INFO 19252 --- [ost-startStop-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2013-12-23 00:23:11.409  INFO 19252 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2013-12-23 00:23:11.634  INFO 19252 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/greeting],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String hello.GreetingController.greeting(java.lang.String,org.springframework.ui.Model)
2013-12-23 00:23:11.717  INFO 19252 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2013-12-23 00:23:11.717  INFO 19252 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2013-12-23 00:23:12.406  INFO 19252 --- [ost-startStop-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 1132 ms
2013-12-23 00:23:12.417 ERROR 19252 --- [           main] o.a.coyote.http11.Http11NioProtocol      : Failed to start end point associated with ProtocolHandler ["http-nio-8080"]

java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:473)
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:617)
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:444)
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1010)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:459)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:335)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:58)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:53)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:259)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:140)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:158)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:135)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:552)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:293)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:749)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:738)
    at hello.Application.main(Application.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
    at java.lang.Thread.run(Thread.java:744)

2013-12-23 00:23:12.419 ERROR 19252 --- [           main] o.apache.catalina.core.StandardService   : Failed to start connector [Connector[org.apache.coyote.http11.Http11NioProtocol-8080]]

org.apache.catalina.LifecycleException: Failed to start component [Connector[org.apache.coyote.http11.Http11NioProtocol-8080]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:459)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:335)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:58)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:53)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:259)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:140)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:158)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:135)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:552)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:293)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:749)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:738)
    at hello.Application.main(Application.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.catalina.LifecycleException: service.getName(): "Tomcat";  Protocol handler start failed
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1017)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 24 common frames omitted
Caused by: java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:473)
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:617)
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:444)
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1010)
    ... 25 common frames omitted

2013-12-23 00:23:12.420  INFO 19252 --- [           main] o.apache.catalina.core.StandardService   : Stopping service Tomcat
2013-12-23 00:23:12.430  INFO 19252 --- [           main] nitializer$AutoConfigurationReportLogger : 


=========================
AUTO-CONFIGURATION REPORT
=========================


Positive matches:
-----------------

   MessageSourceAutoConfiguration
      - @ConditionalOnMissingBean (types: org.springframework.context.MessageSource; SearchStrategy: all) found no beans (OnBeanCondition)

   PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer
      - @ConditionalOnMissingBean (types: org.springframework.context.support.PropertySourcesPlaceholderConfigurer; SearchStrategy: current) found no beans (OnBeanCondition)

   ThymeleafAutoConfiguration
      - @ConditionalOnClass classes found: org.thymeleaf.spring3.SpringTemplateEngine (OnClassCondition)
      - @ConditionalOnClass classes found: org.thymeleaf.spring3.SpringTemplateEngine (OnClassCondition)

   ThymeleafAutoConfiguration.DefaultTemplateResolverConfiguration
      - @ConditionalOnMissingBean (names: defaultTemplateResolver; SearchStrategy: all) found no beans (OnBeanCondition)

   ThymeleafAutoConfiguration.ThymeleafDefaultConfiguration
      - @ConditionalOnMissingBean (types: org.thymeleaf.spring3.SpringTemplateEngine; SearchStrategy: all) found no beans (OnBeanCondition)

   ThymeleafAutoConfiguration.ThymeleafViewResolverConfiguration
      - @ConditionalOnClass classes found: javax.servlet.Servlet (OnClassCondition)
      - @ConditionalOnClass classes found: javax.servlet.Servlet (OnClassCondition)

   ThymeleafAutoConfiguration.ThymeleafViewResolverConfiguration#thymeleafViewResolver
      - @ConditionalOnMissingBean (names: thymeleafViewResolver; SearchStrategy: all) found no beans (OnBeanCondition)

   DispatcherServletAutoConfiguration
      - found web application StandardServletEnvironment (OnWebApplicationCondition)
      - @ConditionalOnClass classes found: org.springframework.web.servlet.DispatcherServlet (OnClassCondition)
      - found web application StandardServletEnvironment (OnWebApplicationCondition)
      - @ConditionalOnClass classes found: org.springframework.web.servlet.DispatcherServlet (OnClassCondition)
      - @ConditionalOnBean (types: org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; SearchStrategy: all) found the following [tomcatEmbeddedServletContainerFactory] (OnBeanCondition)

   DispatcherServletAutoConfiguration#dispatcherServlet
      - no DispatcherServlet found (DispatcherServletAutoConfiguration.DefaultDispatcherServletCondition)

   EmbeddedServletContainerAutoConfiguration
      - found web application StandardServletEnvironment (OnWebApplicationCondition)
      - found web application StandardServletEnvironment (OnWebApplicationCondition)

   EmbeddedServletContainerAutoConfiguration.EmbeddedTomcat
      - @ConditionalOnClass classes found: javax.servlet.Servlet,org.apache.catalina.startup.Tomcat (OnClassCondition)
      - @ConditionalOnClass classes found: javax.servlet.Servlet,org.apache.catalina.startup.Tomcat (OnClassCondition)
      - @ConditionalOnMissingBean (types: org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; SearchStrategy: current) found no beans (OnBeanCondition)

   ServerPropertiesAutoConfiguration#serverProperties
      - @ConditionalOnMissingBean (types: org.springframework.boot.context.embedded.properties.ServerProperties; SearchStrategy: all) found no beans (OnBeanCondition)

   WebMvcAutoConfiguration
      - found web application StandardServletEnvironment (OnWebApplicationCondition)
      - @ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.servlet.DispatcherServlet,org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter (OnClassCondition)
      - found web application StandardServletEnvironment (OnWebApplicationCondition)
      - @ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.servlet.DispatcherServlet,org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter (OnClassCondition)
      - @ConditionalOnMissingBean (types: org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; SearchStrategy: all) found no beans (OnBeanCondition)

   WebMvcAutoConfiguration#hiddenHttpMethodFilter
      - @ConditionalOnMissingBean (types: org.springframework.web.filter.HiddenHttpMethodFilter; SearchStrategy: all) found no beans (OnBeanCondition)

   WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#defaultViewResolver
      - @ConditionalOnMissingBean (types: org.springframework.web.servlet.view.InternalResourceViewResolver; SearchStrategy: all) found no beans (OnBeanCondition)


Negative matches:
-----------------

   RabbitAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.amqp.rabbit.core.RabbitTemplate,com.rabbitmq.client.Channel (OnClassCondition)

   AopAutoConfiguration
      - required @ConditionalOnClass classes not found: org.aspectj.lang.annotation.Aspect,org.aspectj.lang.reflect.Advice (OnClassCondition)

   BatchAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.batch.core.launch.JobLauncher (OnClassCondition)

   JpaRepositoriesAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.data.jpa.repository.JpaRepository (OnClassCondition)

   MongoRepositoriesAutoConfiguration
      - required @ConditionalOnClass classes not found: com.mongodb.Mongo,org.springframework.data.mongodb.repository.MongoRepository (OnClassCondition)

   DataSourceAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType (OnClassCondition)

   DataSourceTransactionManagerAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.jdbc.core.JdbcTemplate,org.springframework.transaction.PlatformTransactionManager (OnClassCondition)

   JmsTemplateAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.jms.core.JmsTemplate,javax.jms.ConnectionFactory (OnClassCondition)

   DeviceResolverAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.mobile.device.DeviceResolverHandlerInterceptor,org.springframework.mobile.device.DeviceHandlerMethodArgumentResolver (OnClassCondition)

   HibernateJpaAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean,org.springframework.transaction.annotation.EnableTransactionManagement,javax.persistence.EntityManager,org.hibernate.ejb.HibernateEntityManager (OnClassCondition)

   ReactorAutoConfiguration
      - required @ConditionalOnClass classes not found: reactor.spring.context.config.EnableReactor (OnClassCondition)

   ThymeleafAutoConfiguration.ThymeleafSecurityDialectConfiguration
      - required @ConditionalOnClass classes not found: org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect (OnClassCondition)

   ThymeleafAutoConfiguration.ThymeleafWebLayoutConfiguration
      - required @ConditionalOnClass classes not found: nz.net.ultraq.thymeleaf.LayoutDialect (OnClassCondition)

   EmbeddedServletContainerAutoConfiguration.EmbeddedJetty
      - required @ConditionalOnClass classes not found: org.eclipse.jetty.server.Server,org.eclipse.jetty.util.Loader (OnClassCondition)

   MultipartAutoConfiguration
      - @ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.multipart.support.StandardServletMultipartResolver (OnClassCondition)
      - @ConditionalOnClass classes found: javax.servlet.Servlet,org.springframework.web.multipart.support.StandardServletMultipartResolver (OnClassCondition)
      - @ConditionalOnBean (types: javax.servlet.MultipartConfigElement; SearchStrategy: all) found no beans (OnBeanCondition)

   WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#beanNameViewResolver
      - @ConditionalOnBean (types: org.springframework.web.servlet.View; SearchStrategy: all) found no beans (OnBeanCondition)

   WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#viewResolver
      - @ConditionalOnBean (types: org.springframework.web.servlet.View; SearchStrategy: all) found no beans (OnBeanCondition)

   WebSocketAutoConfiguration
      - required @ConditionalOnClass classes not found: org.springframework.web.socket.WebSocketHandler (OnClassCondition)



java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embdedded Tomcat
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:138)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:552)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:293)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:749)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:738)
    at hello.Application.main(Application.java:12)
    ... 6 more
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embdedded Tomcat
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:85)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:53)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:259)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:140)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:158)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:135)
    ... 13 more
Caused by: java.lang.IllegalStateException: Tomcat connector in failed state
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:81)
    ... 18 more

ฉันคิดว่านี่เป็นเพราะพอร์ตของฉันถูกใช้ ใช้พอร์ต 8080 ของฉันดังนั้นฉันจึงลองใช้พอร์ต 8181 ฉันไม่มีแอปพลิเคชันบนพอร์ต 8181

ใน tomcat server.xml ฉันตั้งค่าพอร์ตเป็น 8181 แต่ปัญหายังคงมีอยู่

ฉันพบโพสต์นี้:

พอร์ตสำรองสำหรับ Tomcat (ไม่ใช่ 8080) เมื่อเริ่มต้นด้วย Maven?

แต่ฉันมีปัญหาเดียวกันหลังจากเปิดตัว mvn -Dmaven.tomcat.port = 8181 tomcat: run-war

ฉันไม่เข้าใจว่า maven เชื่อมโยงกับเซิร์ฟเวอร์ tomcat ได้อย่างไรนี่คือ 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.springframework</groupId>
    <artifactId>gs-serving-web-content</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>0.5.0.M6</version>
    </parent>

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

    <properties>
        <start-class>hello.Application</start-class>
    </properties>

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

    <repositories>
        <repository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

ขอบคุณสำหรับความช่วยเหลือของคุณ


ขั้นแรกตรวจสอบให้แน่ใจว่าพอร์ตเหล่านี้ 'จริง' พร้อมใช้งานสำหรับการเริ่มต้น ตอนนี้ฉันเดาว่าคุณกำลังใช้ระบบ * Unix (ฉันเดาจากตัวคั่นเส้นทาง) เปิดเทอร์มินัลของคุณและเรียกใช้netstat -tuplenเพื่อรับรายการพอร์ตที่ใช้ทั้งหมดพร้อมด้วยรหัสกระบวนการที่เกี่ยวข้อง ตรวจสอบจากที่นั่นว่าพอร์ตนั้นไม่มีการใช้งานหรือไม่ก่อนที่จะเริ่ม tomcat
Saif Asif

ใช่พอร์ต 8181 ของฉันฟรี
Ajouve

1
ตรวจสอบว่าพอร์ตเริ่มต้น (8080) กำลังทำงานอยู่หรือไม่ ใน Windows ให้ใช้> netstat -a -o -n จากนั้นค้นหาพอร์ตของคุณว่าไม่มีการทำงานหรือไม่ .... หากกำลังทำงานอยู่ให้สังเกตว่า pid สอดคล้องกัน taskkill / f / pid {pidno}
Sagar Rout

IP ที่ไม่ถูกต้องในไฟล์กำหนดค่าทำให้เกิดข้อยกเว้นนี้
Xaqron

คำตอบ:


109

ใช้ฤดูใบไม้ผลิ Boot ฝังโพงโดยเริ่มต้น tomcat-maven-pluginแต่จะจัดการกับมันแตกต่างกันโดยไม่ต้องใช้ ในการเปลี่ยน--server.portพารามิเตอร์การใช้พอร์ตเช่น:

java -jar target/gs-serving-web-content-0.1.0.jar --server.port=8181

อัปเดต . หรือใส่server.port=8181ลงในapplication.properties(หรือapplication.yml)


2
เป็นไปได้ไหมที่จะตั้งค่าในการกำหนดค่า? ตัวอย่างเช่นการใช้คำอธิบายประกอบ?
Daniil Shevelev

66
การใส่server.port=8181ลงในไฟล์ application.properties ของคุณควรใช้งานได้เช่นกัน
Marcin Zajączkowski

อย่าลืมทำความสะอาดและสร้าง ... ที่ช่วยด้วย
cheenbabes

4
ตัวเลือกที่ดีกว่าสำหรับไฟล์ application.properties รวมถึงค่าเริ่มต้นที่มีความสามารถในการแทนที่ server.port = $ {port: 8181}
Shawn Vader

1
ขอบคุณมาก !! ฉันค้นหาโซลูชันนั้นทั้งวันและหลังจากเพิ่ม --server.port = 8181 มันแก้ไขได้ ขอบคุณ
gsiradze

50

รันคำสั่งต่อไปนี้เพื่อค้นหากระบวนการที่กำลังใช้พอร์ต

lsof -i :<portNumber> | grep LISTEN

ในกรณีของคุณจะเป็น ->

lsof -i :8080 | grep LISTEN
java    78960 xyxss  119u  IPv6 0x6c20d372bc88c27d      0t0  TCP *:8092 (LISTEN)

78960 เป็นรหัสกระบวนการใช้คำสั่งต่อไปนี้เพื่อฆ่ากระบวนการ

kill -9 78960

เปิดแอปพลิเคชันอีกครั้ง


1
ฉันต้องใช้คำสั่งนี้เพื่อให้มันทำงานบน mac ของฉัน: sudo lsof -n -P | grep ฟัง Mac จะแจ้งให้คุณพิมพ์รหัสผ่านขณะใช้ sudo
Simon

ขอบคุณสำหรับคำตอบที่นี่ เฉพาะโซลูชันนี้ใช้ได้กับ IntelliJ
AMIC MING

30

กำหนดค่าหมายเลขพอร์ตอื่น (เช่น: 8181) ใน/src/main/resources/application.properties

server.port = 8181


@Junchen Lui นั่นเป็นเพราะมันเป็นเพียงวิธีแก้ปัญหาเท่านั้น หากคุณทำเช่นนี้ตลอดเวลาคุณจะมี Tomcats ที่ไม่ได้ใช้จำนวนมากวิ่งอยู่ แก้ไขข้อผิดพลาดตั้งแต่แรกดีกว่า
Stimpson Cat

เขื่อนมันใช้งานได้จริงโดยไม่ต้องกำหนดค่า xml หรือการตั้งค่า projecto
diego matos - คิคิ


4

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


4

รูปภาพของ Spring Tool Suite และปุ่มหยุดแอปพลิเคชัน

ในกรณีของฉันดูในหน้าต่างเซิร์ฟเวอร์แสดงเฉพาะเซิร์ฟเวอร์ tomcat ที่ฉันไม่เคยใช้สำหรับโครงการนี้ โครงการ SpringBoot ของฉันใช้เซิร์ฟเวอร์ Tomcat แบบฝังและไม่หยุดทำงานเมื่อแอปพลิเคชันของฉันเสร็จสิ้น ปุ่มนี้ที่ฉันระบุด้วยลูกศรสีแดงจะหยุดแอปพลิเคชันและเซิร์ฟเวอร์ Tomcat ดังนั้นในครั้งต่อไปที่ฉันเรียกใช้แอปพลิเคชันฉันจะไม่ได้รับข้อผิดพลาดที่ Instance of Tomcat กำลังทำงานบนพอร์ต 8080

ข้อความแสดงข้อผิดพลาดจริง:

ตรวจสอบการกำหนดค่าของตัวเชื่อมต่อระบุและหยุดกระบวนการใด ๆ ที่รับฟังบนพอร์ต 8080 หรือกำหนดค่าแอปพลิเคชันนี้เพื่อรับฟังบนพอร์ตอื่น

เกิดจาก: java.net.BindException: แอดเดรสถูกใช้งานแล้วเกิดจาก: org.apache.catalina.LifecycleException: service.getName (): "Tomcat"; การเริ่มตัวจัดการโปรโตคอลล้มเหลว

ตอนนี้ฉันจะหาวิธีปิดบริการทั้งหมดเมื่อแอปพลิเคชัน SpringBoot Consuming Rest เสร็จสมบูรณ์ในบทช่วยสอนนี้https://spring.io/guides/gs/consuming-rest/

สปริงบูต


3

ก่อนอื่นให้ตรวจสอบว่าใครใช้พอร์ต 8080

หากใช้พอร์ต 8080 ให้เปลี่ยนพอร์ตการฟังเป็น 8181

หากคุณใช้ IDEA แก้ไขการกำหนดค่าเริ่มต้นเรียกใช้ -> แก้ไขการกำหนดค่า ป้อนคำอธิบายภาพที่นี่

หากคุณใช้ mvn spring-boot ให้ใช้คำสั่ง:

mvn spring-boot:run -Dserver.port=8181

หากคุณใช้ java -jar ให้ใช้คำสั่ง:

java -jar xxxx.jar --server.port=8181

2

สิ่งนี้ใช้ได้ผลสำหรับฉันเท่านั้นโดยการตั้งค่าคุณสมบัติเพิ่มเติมและใช้หมายเลขพอร์ตที่มีอยู่โดยพลการดังนี้:

  • YML

/src/main/resources/application.yml

server:
  port: 18181
management:
  port: 9191
tomcat:
  jvmroute: 5478
  ajp:
    port: 4512
    redirectPort: 1236
  • คุณสมบัติ

/src/main/resources/application.properties

server.port=18181
management.port=9191
tomcat.jvmroute=5478
tomcat.ajp.port=4512
tomcat.ajp.redirectPort=1236     

1
สิ่งนี้ได้ผลสำหรับฉัน ใน Spring boot 2.0.3.RELEASE management.portคีย์จะถูกแทนที่ด้วยmanagement.server.port.
biniam

tomcat.jvmroute = 5478 ช่วยฉันเรียกใช้แอปพลิเคชันสองอินสแตนซ์พร้อมกับ server.port = 18181
Ritesh K


2

ในไฟล์application.propertiesของคุณ-

/ src / main / resources / application.properties

เปลี่ยนหมายเลขพอร์ตเป็นดังนี้ -

server.port = 8181

หรือคุณสามารถระบุหมายเลขพอร์ตอื่นขณะเรียกใช้ไฟล์ jar ของคุณ - java -jar resource-server / build / libs / resource-server.jar --server.port = 8888


2

คุณสามารถกำหนดค่าหมายเลขพอร์ตอื่นใน IDE /src/main/resources/application.properties

server.port = 8081

หรือคลิกขวาที่แท็บIDE consoleแล้วเลือกTerminate / Disconnect All


2

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

โซลูชันที่ 1: เพิ่มพอร์ตฟรี

บนเครื่อง Linux คุณสามารถค้นหารหัสกระบวนการของผู้บริโภคของพอร์ตจากนั้นจึงฆ่ามัน ใช้คำสั่งต่อไปนี้ (สมมติว่าพอร์ตเริ่มต้นคือ 8080)

netstat -pnltu | grep -i "8080"

ผลลัพธ์ของคำสั่งดังกล่าวข้างต้นจะเป็นดังนี้:

tcp6   0  0 :::8080    :::*      LISTEN      20674/java 

จากนั้นคุณสามารถฆ่ากระบวนการได้อย่างง่ายดายด้วย processid:

kill 20674

บนเครื่อง Windows netstat -ano -p tcp |find "8080"ที่จะหาการใช้ หากต้องการฆ่ากระบวนการให้ใช้taskkill /F /PID 1234(แทน 1234 ให้ป้อน processid ที่ก่อตั้ง)

โซลูชันที่ 2: เปลี่ยนพอร์ตเริ่มต้น

ในขั้นตอนการพัฒนานักพัฒนาใช้สิ่งport 8080ที่คุณสามารถเปลี่ยนแปลงได้อย่างง่ายดาย คุณต้องระบุหมายเลขพอร์ตที่คุณต้องการในapplication.propertiesไฟล์ของโครงการของคุณ ( /src/main/resources/application.properties) โดยใช้ข้อกำหนดต่อไปนี้:

server.port=8081

คุณยังสามารถตั้งค่าหมายเลขพอร์ตทางเลือกในขณะเรียกใช้.jarไฟล์

- java -jar spring-boot-application.jar --server.port=8081

โปรดสังเกตว่าบางครั้ง (ไม่จำเป็น) คุณต้องเปลี่ยนพอร์ตอื่น ๆ เช่น:

management.port=
tomcat.jvmroute=
tomcat.ajp.port=
tomcat.ajp.redirectPort=
etc...

1

ในกรณีของฉัน Oracle TNS Service ใช้พอร์ต 8080 พบว่าใช้คำสั่ง "netstat - anob" ในฐานะผู้ดูแลระบบ เพียงใช้ฐานข้อมูลปิดระบบจากเมนูเริ่มของ Windows เพื่อหยุดบริการนั้นและสามารถเริ่มแอป SpringBoot ได้โดยไม่มีปัญหาใด ๆ

นอกจากนี้หากคุณไม่พบว่าแอปใดใช้พอร์ต 8080 และต้องการเรียกใช้แอป SprintBoot คุณสามารถคลิกที่ Run As ... และในอาร์กิวเมนต์ VM ให้ป้อน: -Dserver.port = 0 (สิ่งนี้จะเลือกแบบสุ่ม พอร์ตที่มี) หรือคุณสามารถระบุได้เช่น: -Dserver.port = 8081

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


ฉันลองเปลี่ยน -Dserver.port = 0 ของฉันและทดสอบกับสองแอพพลิเคชั่นเปิดตัวพร้อมกัน ตอนนี้ทั้งคู่เปิดในพอร์ตที่แตกต่างกัน
hnahak

1

คุณสามารถแก้ไขได้โดยทำตามขั้นตอนต่อไปนี้:

  1. คลิกขวาที่โปรเจ็กต์ที่คุณกำลังดำเนินการอยู่
  2. คลิกที่Run asและRun Configurationsจากตัวเลือก
  3. การกำหนดค่าการรันใหม่จะเปิดขึ้น ภายใต้Spring Boot Tabดูคุณสมบัติ Overrideคุณสมบัติแทนที่
  4. เพิ่มคู่ค่าคุณสมบัติเป็น server.port=8181หรือพอร์ตอื่น ๆ ที่คุณเลือก สิ่งนี้จะแทนที่พอร์ตเริ่มต้นซึ่งเป็น 8080

1

มันเป็นคำถามเก่าจริงๆ บางทีนี่อาจเป็นประโยชน์ มุ่งเน้นไปที่ปัญหาชื่อของคุณเป็นวิธีที่ฉันเริ่มต้นแอปพลิเคชันของฉันจากนั้นฉันสามารถปิดได้อย่างง่ายดาย เปลี่ยนหมายเลขพอร์ตสำหรับแต่ละแอปพลิเคชันที่คุณต้องการเริ่มต้นตามที่กล่าวไว้ข้างต้น

application.properties

#using curl -X POST localhost:8080/actuator/shutdown to avoid:
#netstat -ano | find "8080"
#taskkill /F /PID xxxx (xxxx stands for PID)
management.endpoints.web.exposure.include=*
management.endpoint.shutdown.enabled=true
endpoints.shutdown.enabled=true

เพิ่มการอ้างอิงนี้:

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

ตอนนี้คุณสามารถยิงได้อย่างง่ายดายโดย

curl -X POST localhost:8080/actuator/shutdown

1

คลิกขวาในคอนโซลแล้วคลิกตัวเลือกยุติ / ยกเลิกการเชื่อมต่อทั้งหมด

หรือ

คลิกที่ไอคอน 'แสดงคอนโซลที่เลือก' ที่มุมบนขวาของหน้าต่างคอนโซลจากนั้นเลือกและยุติคอนโซลที่ยังคงพอร์ตไว้


1

ฉันกำลังมองหาวิธีแก้ปัญหาสำหรับ Windows แต่ไม่พบเลย สุดท้ายพบว่ามีแอปพลิเคชัน java ห้อยอยู่โดยใช้พอร์ต อาจจะเป็นอินสแตนซ์ก่อนหน้าของแอปพลิเคชัน Spring และสิ้นสุดกระบวนการ

ผมใช้TCPView จากไมโครซอฟท์ แสดงบริการ / แอปพลิเคชันโดยใช้พอร์ตใดบนคอมพิวเตอร์ของคุณ

ป้อนคำอธิบายภาพที่นี่

คุณสามารถสิ้นสุดกระบวนการ และเสร็จสิ้น!


1

นี่เป็นเพราะพอร์ตทำงานอยู่เบื้องหลังอยู่แล้วดังนั้นคุณสามารถรีสตาร์ท eclipse และลองอีกครั้ง หรือเปิดไฟล์ application.properties และเปลี่ยนค่าของ 'server.port' เป็นค่าอื่นเช่น: - 8000/8181


0

ปิดแอปพลิเคชันจากนั้นรีสตาร์ทหลังจากเปลี่ยนเป็นพอร์ตใหม่:

${port:8181}

คุณสามารถใช้พอร์ตใหม่ที่ไม่ได้ใช้ ที่นี่ฉันใช้พอร์ต 8181


@ บรูซนี่ไม่พยายามให้คำตอบได้อย่างไร? ฉันเห็นความพยายามที่ชัดเจน: ปิดแอปพลิเคชัน; การเปลี่ยนพอร์ต และรีสตาร์ท อาจผิดทั้งหมด แต่ไม่ได้หมายความว่าไม่ใช่ความพยายามที่จะตอบ
เลิกทำ

0

ฉันแก้ไขปัญหานี้โดยหยุดแอปพลิเคชัน (สี่เหลี่ยมสีแดงใน Eclipse) ก่อนที่จะรันอีกครั้ง หากคุณไม่หยุดแอปพลิเคชันจะอยู่ในโหมดทำงานดังนั้นพอร์ตยังคงใช้อยู่


0

คุณมีกระบวนการอื่นที่ฟังบนพอร์ต 8080 ซึ่งเป็นพอร์ตเริ่มต้นที่ใช้โดยการสนับสนุนทางเว็บของ Spring Boot คุณต้องหยุดกระบวนการนั้นหรือกำหนดค่าแอปของคุณให้ฟังบนพอร์ตอื่น

คุณสามารถเปลี่ยนคอนฟิกูเรชันพอร์ตได้โดยเพิ่มserver.port = 4040 (ตัวอย่าง) เป็นsrc / main / resources / application.properties


0

โดยทั่วไปเซิร์ฟเวอร์เริ่มต้นมักจะทำงานบนพื้นหลังที่พอร์ต 8080 เปิด services.msc และหยุดเซิร์ฟเวอร์ tomcat แล้วลองรันแอปพลิเคชัน spring boot อีกครั้ง


0

ใน Eclipse หากติดตั้ง Spring Tool Suite คุณสามารถไปที่Boot Dashboardและขยาย local ใน explorer และคลิกขวาที่แอปพลิเคชันที่ทำงานบนพอร์ต 8080 และหยุดก่อนที่คุณจะเรียกใช้แอปพลิเคชันของคุณอีกครั้ง


0

ฉันพยายามเปลี่ยนหมายเลขพอร์ตในไฟล์ต่อไปนี้ - /src/main/resources/application-prod.yml

และภายในไฟล์นี้ฉันได้ทำการเปลี่ยนแปลงนี้:

เซิร์ฟเวอร์: พอร์ต: 8100 (หรืออะไรก็ได้ที่คุณต้องการ)

ฉันหวังว่าสิ่งนี้จะดีสำหรับคุณ


-1

ผมได้รับปัญหาเดียวกันคือจัดการโปรโตคอลเริ่มล้มเหลว สาเหตุคือพอร์ตถูกใช้งานแล้ว ฉันพบว่าพอร์ตถูกใช้งานหรือไม่ มันเป็น ดังนั้นฉันจึงฆ่ากระบวนการที่ทำงานบนพอร์ตนั้นและรีสตาร์ทแอปพลิเคชันสปริงบูตของฉัน และมันได้ผล :)

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