JAR-файл работает на Windows, но не на Linux - PullRequest
0 голосов
/ 06 апреля 2020

Я создал файл JAR на Maven. Это приложение содержит Spring Boot и Vaadin. Я могу запустить его на Windows. Когда я пытаюсь запустить на Linux, он говорит, что Tomcat не запускается.

Мне было интересно, если это проблема с OpenJDK, потому что это единственное отличие, которое я вижу сейчас. На Windows я использую Oracle JDK 8.

Я пытался запустить на AWS, Docker, Ubuntu. Тот же результат. Windows 10 - ОК.

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156) ~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544) ~[spring-context-5.2.0.RELEASE.jar!/:5.2.0.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
    at no.safe4.dynamodbcsvui.Application.main(Application.java:14) [classes!/:1.0]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111-internal]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111-internal]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111-internal]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111-internal]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [dynamodb-csv-ui-1.0.jar:1.0]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [dynamodb-csv-ui-1.0.jar:1.0]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) [dynamodb-csv-ui-1.0.jar:1.0]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) [dynamodb-csv-ui-1.0.jar:1.0]

Причина: org.springframework.boot.web.server.WebServerException: Невозможно запустить встроенный Tomcat по адресу org.springframework.boot.web.embedded.tomcat.TomcatWebServer .initialize (TomcatWebServer. java: 126) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] по адресу org.springframework.boot.web.embedded.tomcat.TomcatWebServer. (TomcatWebServer. . java: 88) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] в org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer (TomcatServletWebSver8 *: 438) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] на org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer (TomcatServletWebServerFactory: 1019. * 1019 ) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer (ServletWebServerApplicationContext. ~ 1020: * 180) spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] в org.s pringframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefre sh (ServletWebServerApplicationContext. java: 153) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] ... 16 общих кадров пропущены java: 171) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] по адресу org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize (TomcatWebServer. java : 110) ~ [spring-boot-2.2.0.RELEASE.jar! /: 2.2.0.RELEASE] org.springframework.context.ApplicationContextException :: команда не найдена

1 Ответ

1 голос
/ 07 апреля 2020

Я нашел проблему / решение:

1) Добавлен debug = true в application.properties

2) После запуска я нашел его:

Caused by: java.lang.IllegalStateException: Running project in development mode with no access to folder...

Сборка вместо этого проект в производственном режиме, см. https://vaadin.com/docs/v14/flow/production/tutorial-production-mode-basic.html

3) На Vaadin GitHub есть способ создать файл JAR в производственном режиме:

mvn clean package -Pproduction

Это проблема решена и приложение работает.

...