【问题标题】:spring boot application would not statring from cmd how to start it from cmdspring boot 应用程序不会从 cmd 启动 如何从 cmd 启动它
【发布时间】:2019-02-01 10:34:22
【问题描述】:

从cmd运行spring boot项目时出现如下错误

我想从 cmd 运行我的 spring boot 项目,但我不明白它有什么问题,为什么它不工作,为什么它不运行。当我使用 inteliij IDE 运行我的 Spring Boot 项目时,它运行时没有任何问题和错误,但是当我尝试使用以下命令通过 cmd 运行它时我没有运行:java -jar target/myProject-1.0-SNAPSHOT.jar

2019-02-01 15:24:31.083  INFO 15164 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/lfms]   : Initializing Spring embedded WebApplicationContext
2019-02-01 15:24:31.083  INFO 15164 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 7899 ms
2019-02-01 15:24:31.314  INFO 15164 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2019-02-01 15:24:31.319  INFO 15164 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2019-02-01 15:24:31.320  INFO 15164 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2019-02-01 15:24:31.321  INFO 15164 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2019-02-01 15:24:31.321  INFO 15164 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2019-02-01 15:24:31.444  WARN 15164 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileUtil' defined in URL [jar:file:/D:/tecor/TL/lfms/target/lfms-1.0-SNAPSHOT.jar!/BOOT-INF/classes!/com/lfms/util/FileUtil.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
2019-02-01 15:24:33.679  INFO 15164 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-02-01 15:24:33.706  INFO 15164 --- [           main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-02-01 15:24:33.715 ERROR 15164 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileUtil' defined in URL [jar:file:/D:/tecor/TL/lfms/target/lfms-1.0-SNAPSHOT.jar!/BOOT-INF/classes!/com/lfms/util/FileUtil.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1238) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1137) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:503) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
        at com.lfms.Application.main(Application.java:19) [classes!/:1.0-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_144]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [lfms-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [lfms-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [lfms-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [lfms-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
Caused by: java.lang.ExceptionInInitializerError: null
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_144]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_144]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_144]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_144]
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:170) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1230) ~[spring-beans-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
        ... 25 common frames omitted
Caused by: org.yaml.snakeyaml.error.YAMLException: java.io.IOException: Stream closed
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:139) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:452) ~[snakeyaml-1.23.jar!/:na]
        at com.lfms.util.FileUtil.<clinit>(FileUtil.java:37) ~[classes!/:1.0-SNAPSHOT]
        ... 32 common frames omitted
Caused by: java.io.IOException: Stream closed
        at java.io.PushbackInputStream.ensureOpen(Unknown Source) ~[na:1.8.0_144]
        at java.io.PushbackInputStream.read(Unknown Source) ~[na:1.8.0_144]
        at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124) ~[snakeyaml-1.23.jar!/:na]
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183) ~[snakeyaml-1.23.jar!/:na]
        ... 46 common frames omitted

显示它如何访问 application.yml 文件属性的 FileUtil 文件代码

Yaml yml = new Yaml();
        Map<String, Map<String, Object>> ymlProperties = yml.load(ClassLoader.getSystemResourceAsStream("application.yml"));

【问题讨论】:

  • 你是如何打包你的jar的? mvn package?
  • @ngueno mvn clean package install
  • 试试mvn spring-boot:run
  • 在你的资源或项目目录中有一个 yml 文件,比如配置文件
  • 可能无法正确读取资源。 yaml文件在jar里面吗?还有,项目中的路径是怎么设置的?

标签: java spring-boot executable-jar


【解决方案1】:

当您将 Spring Boot 应用程序打包为可执行 jar 并启动它时,ClassLoader 结构会发生变化。结果,系统类加载器找不到您的application.yml 文件。而不是使用ClassLoader.getSystemResourceAsStream(String),您应该使用FileUtils.class.getClassLoader().getResourceAsStream(String)。这将确保您使用加载了FileUtil 类的类加载器来读取application.yml 文件。

【讨论】:

  • 谢谢你的回答,它对我有帮助,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2015-02-21
  • 1970-01-01
相关资源
最近更新 更多