Java Spring Boot 启动后停止

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/36228570/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 17:36:00  来源:igfitidea点击:

Spring boot stops after starting

javaspringspring-boot

提问by

errors are:

错误是:

/usr/lib/jvm/java-8-oracle/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:40745,suspend=y,server=n -Dspring.output.ansi.enabled=always -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/lib/deploy.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/jaccess.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/jfxrt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/nashorn.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-8-oracle/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-8-oracle/jre/lib/javaws.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfxswt.jar:/usr/lib/jvm/java-8-oracle/jr       main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped (empty) config file 'file:./application.properties' for profile default
2016-03-25 23:43:41.426 DEBUG 18169 --- [           main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped (empty) config file 'classpath:/application.properties' for profile default
2016-03-25 23:43:41.460  INFO 18169 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@3738449f: startup date [Fri Mar 25 23:43:41 EET 2016]; root of context hierarchy
2016-03-25 23:43:44.256 DEBUG 18169 --- [           main] o.s.b.a.AutoConfigurationPackages        : @EnableAutoConfiguration was declared on a class in the package 'org.infoowl'. Automatic @Repository and @Entity scanning is enabled.
2016-03-25 23:43:46.084  INFO 18169 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2016-03-25 23:43:46.136  INFO 18169 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2016-03-25 23:43:46.306  INFO 18169 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {4.3.11.Final}
2016-03-25 23:43:46.309  INFO 18169 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2016-03-25 23:43:46.323  INFO 18169 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2016-03-25 23:43:47.042  INFO 18169 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2016-03-25 23:43:47.841  INFO 18169 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
2016-03-25 23:43:48.085  INFO 18169 --- [           main] o.h.h.i.ast.ASTQueryTranslatorFactory    : HHH000397: Using ASTQueryTranslatorFactory
2016-03-25 23:43:48.971  INFO 18169 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000228: Running hbm2ddl schema update
2016-03-25 23:43:48.972  INFO 18169 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000102: Fetching database metadata
2016-03-25 23:43:48.988  INFO 18169 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000396: Updating schema
2016-03-25 23:43:49.111  INFO 18169 --- [           main] o.hibernate.tool.hbm2ddl.TableMetadata   : HHH000261: Table found: movies.movie
2016-03-25 23:43:49.112  INFO 18169 --- [           main] o.hibernate.tool.hbm2ddl.TableMetadata   : HHH000037: Columns: [actor, id, title]
2016-03-25 23:43:49.112  INFO 18169 --- [           main] o.hibernate.tool.hbm2ddl.TableMetadata   : HHH000108: Foreign keys: []
2016-03-25 23:43:49.112  INFO 18169 --- [           main] o.hibernate.tool.hbm2ddl.TableMetadata   : HHH000126: Indexes: [primary]
2016-03-25 23:43:49.113  INFO 18169 --- [           main] org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000232: Schema update complete
2016-03-25 23:43:50.698  INFO 18169 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2016-03-25 23:43:50.727 DEBUG 18169 --- [           main] utoConfigurationReportLoggingInitializer : 


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


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


   HazelcastJpaDependencyAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: com.hazelcast.core.HazelcastInstance (OnClassCondition)

   HornetQAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: javax.jms.ConnectionFactory,org.hornetq.api.jms.HornetQJMSClient (OnClassCondition)

   HttpEncodingAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.web.filter.CharacterEncodingFilter (OnClassCondition)

   HypermediaAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.hateoas.Resource,org.springframework.plugin.core.Plugin (OnClassCondition)

   InfinispanCacheConfiguration did not match
      - required @ConditionalOnClass classes not found: org.infinispan.spring.provider.SpringEmbeddedCacheManager (OnClassCondition)

   IntegrationAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.integration.config.EnableIntegration (OnClassCondition)

   JCacheCacheConfiguration did not match
      - required @ConditionalOnClass classes not found: javax.cache.Caching,org.springframework.cache.jcache.JCacheCacheManager (OnClassCondition)

   HymansonAutoConfiguration.JodaDateTimeHymansonConfiguration did not match
      - required @ConditionalOnClass classes not found: org.joda.time.DateTime,com.fasterxml.Hymanson.datatype.joda.ser.DateTimeSerializer,com.fasterxml.Hymanson.datatype.joda.cfg.HymansonJodaDateFormat (OnClassCondition)

   HymansonAutoConfiguration.ParameterNamesModuleConfiguration did not match
      - required @ConditionalOnClass classes not found: com.fasterxml.Hymanson.module.paramnames.ParameterNamesModule (OnClassCondition)

   HymansonHttpMessageConvertersConfiguration.MappingHymanson2XmlHttpMessageConverterConfiguration did not match
      - required @ConditionalOnClass classes not found: com.fasterxml.Hymanson.dataformat.xml.XmlMapper (OnClassCondition)

   JerseyAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.glassfish.jersey.server.spring.SpringComponentProvider,javax.servlet.ServletRegistration (OnClassCondition)

   JmsAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.jms.core.JmsTemplate (OnClassCondition)

   JndiConnectionFactoryAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.jms.core.JmsTemplate (OnClassCondition)

   JndiDataSourceAutoConfiguration did not match
      - @ConditionalOnClass classes found: javax.sql.DataSource,org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType (OnClassCondition)
      - @ConditionalOnProperty missing required properties spring.datasource.jndi-name  (OnPropertyCondition)

   JndiJtaConfiguration did not match
      - @ConditionalOnClass classes found: org.springframework.transaction.jta.JtaTransactionManager (OnClassCondition)
      - JNDI environment is not available (OnJndiCondition)

   JooqAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.jooq.DSLContext (OnClassCondition)

   JpaBaseConfiguration.JpaWebConfiguration did not match
      - @ConditionalOnClass classes found: org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter (OnClassCondition)
      - not a web application (OnWebApplicationCondition)

   LinkedInAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.social.config.annotation.SocialConfigurerAdapter,org.springframework.social.linkedin.connect.LinkedInConnectionFactory (OnClassCondition)

   LiquibaseAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: liquibase.integration.spring.SpringLiquibase (OnClassCondition)

   MailSenderAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: javax.mail.internet.MimeMessage (OnClassCondition)

   MailSenderValidatorAutoConfiguration did not match
      - @ConditionalOnProperty missing required properties spring.mail.test-connection  (OnPropertyCondition)

   MessageSourceAutoConfiguration did not match
      - No bundle found for spring.messages.basename: messages (MessageSourceAutoConfiguration.ResourceBundleCondition)

   MongoAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: com.mongodb.MongoClient (OnClassCondition)

   MongoDataAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: com.mongodb.Mongo,org.springframework.data.mongodb.core.MongoTemplate (OnClassCondition)

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

   MultipartAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: javax.servlet.Servlet,javax.servlet.MultipartConfigElement (OnClassCondition)

   MustacheAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: com.samskivert.mustache.Mustache (OnClassCondition)

   OAuth2AutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.security.oauth2.common.OAuth2AccessToken (OnClassCondition)

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

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

   RedisAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.data.redis.connection.jedis.JedisConnection,org.springframework.data.redis.core.RedisOperations,redis.clients.jedis.Jedis (OnClassCondition)

   RepositoryRestMvcAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration (OnClassCondition)

   SecurityAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.security.authentication.AuthenticationManager,org.springframework.security.config.annotation.authentication.configurers.GlobalAuthenticationConfigurerAdapter (OnClassCondition)

   SecurityFilterAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer,org.springframework.security.config.http.SessionCreationPolicy (OnClassCondition)

   SendGridAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: com.sendgrid.SendGrid (OnClassCondition)

   ServerPropertiesAutoConfiguration did not match
      - not a web application (OnWebApplicationCondition)

   SessionAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.session.Session (OnClassCondition)

   SitePreferenceAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor,org.springframework.mobile.device.site.SitePreferenceHandlerMethodArgumentResolver (OnClassCondition)

   SocialWebAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.social.connect.web.ConnectController,org.springframework.social.config.annotation.SocialConfigurerAdapter (OnClassCondition)

   SolrAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.apache.solr.client.solrj.impl.HttpSolrServer,org.apache.solr.client.solrj.impl.CloudSolrServer,org.apache.solr.common.cloud.HashPartitioner (OnClassCondition)

   SolrRepositoriesAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.apache.solr.client.solrj.SolrServer,org.springframework.data.solr.repository.SolrRepository (OnClassCondition)

   SpringApplicationAdminJmxAutoConfiguration did not match
      - @ConditionalOnProperty missing required properties spring.application.admin.enabled  (OnPropertyCondition)

   SpringDataWebAutoConfiguration did not match
      - @ConditionalOnClass classes found: org.springframework.data.web.PageableHandlerMethodArgumentResolver,org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter (OnClassCondition)
      - not a web application (OnWebApplicationCondition)

   ThymeleafAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.thymeleaf.spring4.SpringTemplateEngine (OnClassCondition)

   TwitterAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.social.config.annotation.SocialConfigurerAdapter,org.springframework.social.twitter.connect.TwitterConnectionFactory (OnClassCondition)

   VelocityAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.apache.velocity.app.VelocityEngine,org.springframework.ui.velocity.VelocityEngineFactory (OnClassCondition)

   WebMvcAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: javax.servlet.Servlet,org.springframework.web.servlet.DispatcherServlet (OnClassCondition)

   WebSocketAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: javax.servlet.Servlet,javax.websocket.server.ServerContainer (OnClassCondition)

   WebSocketMessagingAutoConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer (OnClassCondition)

   XADataSourceAutoConfiguration did not match
      - @ConditionalOnClass classes found: javax.sql.DataSource,javax.transaction.TransactionManager,org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType (OnClassCondition)
      - @ConditionalOnBean (types: org.springframework.boot.jta.XADataSourceWrapper; SearchStrategy: all) found no beans (OnBeanCondition)


Exclusions:
-----------

    None


Unconditional classes:
----------------------

   org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration

   org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration



2016-03-25 23:43:50.761  INFO 18169 --- [           main] o.i.InternetMovieDatabaseApplication     : Started InternetMovieDatabaseApplication in 11.476 seconds (JVM running for 14.426)
2016-03-25 23:43:50.774  INFO 18169 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3738449f: startup date [Fri Mar 25 23:43:41 EET 2016]; root of context hierarchy
2016-03-25 23:43:50.789  INFO 18169 --- [       Thread-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown
2016-03-25 23:43:50.790  INFO 18169 --- [       Thread-2] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
Disconnected from the target VM, address: '127.0.0.1:40745', transport: 'socket'

Process finished with exit code 0

I try to start but after those outputs, it shuts down. I used spring initializr. I just want to make a small REST API.

我尝试启动,但在这些输出之后,它关闭了。我使用了 spring 初始化程序。我只想制作一个小的 REST API。

This is my pom.xml:

这是我的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.infoowl</groupId>
    <artifactId>internetmoviedatabase</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>InternetMovieDatabase</name>
    <description>Internet Movie Database Application</description>

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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


</project>

this is application.properteis:

这是application.properteis

spring.datasource.url=jdbc:mysql://localhost:3306/movies
spring.datasource.username=root
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
server.port=8181
spring.jpa.database=MYSQL
spring.jpa.show-sql=true

InternetMovieDatabaseApplicationclass:

InternetMovieDatabaseApplication班级:

package org.infoowl;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class InternetMovieDatabaseApplication {

    public static void main(String[] args) {
        SpringApplication.run(InternetMovieDatabaseApplication.class, args);
    }
}

ServletInitializerclass:

ServletInitializer班级:

package org.infoowl;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(InternetMovieDatabaseApplication.class);
    }

}

These are the errors if i delete ServletInitializer:

如果我删除,这些是错误ServletInitializer

2016-03-26 00:20:22.691 ERROR 20251 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [org.infoowl.InternetMovieDatabaseApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.context.web.SpringBootServletInitializer
    at org.springframework.context.annotation.ConfigurationClassParser.parse(Configurplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE]
    at o
Caused by: java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.context.web.SpringBootServletInitializer
    at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:163) ~[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:292) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:232) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at E.jar:4.2.5.RELEASE]
    ... 12 common frames omitted
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContext
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_74]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_74]
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_74]
    at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:152) ~[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    ... 16 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.IU-144.4199.23/lib/idea_rt.jar]
Disconnected from the target VM, address: '127.0.0.1:42011', transport: 'socket'

Process finished with exit code 1

采纳答案by ChiefTwoPencils

I don't see anything glaringly wrong with what you have. I have an app that I deploy both as a jar and war simultaneously in different environments (they differ only by packaging); I have a ServletInitializerequivalent to yours and it works without issue with one primary difference.

我看不出你所拥有的有什么明显的错误。我有一个应用程序,我在不同的环境中同时部署为 jar 和 war(它们仅在包装上有所不同);我有一个ServletInitializer和你的等价的,它可以正常工作,但有一个主要区别。

I use a maven run configuration with spring-boot:runas the "Command line" value. With that I can do no more than change the pom to reflect jar or war, run, and go. I've faced problems when switching back and forth and using a config that invokes mainin the app class. For example, just for fun I just ran an instance of the app with jar packaging and running main. Wouldn't even launch. This is just after having it jar packaged and launched using the maven config I mentioned above.

我使用 maven 运行配置spring-boot:run作为“命令行”值。有了这个,我只能更改 pom 以反映 jar 或 war、run 和 go。在来回切换和使用main在应用程序类中调用的配置时,我遇到了问题。例如,为了好玩,我只是运行了一个带有 jar 打包和运行的应用程序实例main。甚至不会启动。这是在使用我上面提到的 maven 配置将它 jar 打包并启动之后。

I would recommend starting with creating that maven run configuration and see what the results are. Here's the way to do it in Intellij so you don't have to use the command line interface.

我建议从创建该 maven 运行配置开始,看看结果是什么。这是在 Intellij 中执行此操作的方法,因此您不必使用命令行界面。

  1. Choose "Edit configurations..." from the dropdown next to the play button.
  2. Press the green +in the upper left-hand corner.
  3. Choose to create a maven configuration.
  4. Name it.
  5. Add spring-boot:runto the "Command line" entry.
  6. Optionally, make it "Share"d or "Single instance only".
  1. 从播放按钮旁边的下拉菜单中选择“编辑配置...”。
  2. +左上角的绿色。
  3. 选择创建 maven 配置。
  4. 命名它。
  5. 添加spring-boot:run到“命令行”条目。
  6. 或者,将其设为“共享”或“仅单个实例”。

I'm not an eclipse/sts user but I'm sure there's a similar way to do it.

我不是 eclipse/sts 用户,但我确信有类似的方法可以做到。

回答by maximede

I don't think you need your ServletInitializer

我不认为你需要你的 ServletInitializer

your InternetMovieDatabaseApplicationwith the @SpringBootApplicationannotation should be sufficient.

InternetMovieDatabaseApplication@SpringBootApplication注释应该足够了。

回答by Ali Dehghani

Apparently, you're going to package your application as war, that's fine but the problem is that you're running your application through the mainmethod in InternetMovieDatabaseApplicationclass. Instead, you should either deploy your application to a Standalone Servlet Container, like Tomcator Jetty, or run the application using the mvn spring-boot:runcommand.

显然,您要将应用程序打包为war,这很好,但问题是您正在通过类中的main方法运行应用程序InternetMovieDatabaseApplication。相反,您应该将应用程序部署到独立 Servlet 容器,例如TomcatJetty,或者使用mvn spring-boot:run命令运行应用程序。

If packaging your application as wararchive is not a strict requirement, i recommend to make jar, not war. In order to doing so, first remove the packagingin your pom.xml:

如果将您的应用程序打包为war存档不是一个严格的要求,我建议制作 jar 而不是 war。为此,首先删除packaging您的pom.xml

<packaging>war</packaging>

Then remove the spring-boot-starter-tomcatdependency:

然后删除spring-boot-starter-tomcat依赖:

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

And finally remove the ServletInitializerclass and run the mainmethod in your InternetMovieDatabaseApplicationclass.

最后删除ServletInitializer该类并main在您的InternetMovieDatabaseApplication类中运行该方法。

回答by A. Vysotskiy

I was having this problem, it was fixed by removing this dependency:

我遇到了这个问题,它是通过删除此依赖项来解决的:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>

回答by Shankul Jain

Although an answer has been accepted, still this might help:

尽管已接受答案,但这仍然可能有所帮助:

Are you trying to run the application from Intellij from Run menuor by right click and run on the class where your main is defined and you are getting above issue and the application works fine from command line?

您是尝试从运行菜单中的Intellij 运行应用程序,还是通过右键单击并在定义 main 的类上运行,并且您遇到了上述问题并且应用程序从命令行正常运行?

If above is the case, I see your pom.xmlhave dependency with providedscope.

如果是上述情况,我看到您的pom.xml依赖于提供的范围。

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

When running the application from run menu in intellij, dependencies with provided scope are not available by default.

从 intellij 中的运行菜单运行应用程序时,默认情况下不提供具有提供范围的依赖项。

To fix this,

为了解决这个问题,

Go to Run Menu -> Edit Configuations and then select Include dependencies with provided scope

转到运行菜单 -> 编辑配置,然后选择包含具有提供范围的依赖项

Image for reference:

图片供参考:

enter image description here

在此处输入图片说明

And try to run again. This should fix the issue.

并尝试再次运行。这应该可以解决问题。

Good luck.

祝你好运。

回答by u1241648

I think you forgot add main-class in properties your pom.xml

我想你忘了在 pom.xml 的属性中添加主类

<properties>
    <start-class>org.infoowl.InternetMovieDatabaseApplication</start-class>
    <java.version>1.8</java.version>
</properties>

and modify your class as follow:

并按如下方式修改您的课程:

@SpringBootApplication
public class InternetMovieDatabaseApplication extends SpringBootServletInitializer {
   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(DemoApplication.class);
   }
    public static void main(String[] args) {
        SpringApplication.run(InternetMovieDatabaseApplication.class, args);
    }
}

and open a command console, execute:

并打开命令控制台,执行:

mvn clean package

then, deploy warinto Tomcat, demo here

然后,部署war到Tomcat,demo在这里

enter image description here

在此处输入图片说明