Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAR文件在Windows上运行,但在Linux上不运行_Java_Spring Boot_Java 8_Vaadin - Fatal编程技术网

Java JAR文件在Windows上运行,但在Linux上不运行

Java JAR文件在Windows上运行,但在Linux上不运行,java,spring-boot,java-8,vaadin,Java,Spring Boot,Java 8,Vaadin,我已经在Maven上创建了一个JAR文件。此应用程序包含Spring Boot和Vaadin。我可以在Windows上运行它。当我尝试在Linux上运行时,它说Tomcat无法启动 我想知道这是否是OpenJDK的问题,因为这是我现在看到的唯一区别。在Windows上,我使用Oracle JDK 8 我试着在AWS,Docker,Ubuntu上运行。同样的结果。 Windows 10-好的 org.springframework.context.ApplicationContextExcepti

我已经在Maven上创建了一个JAR文件。此应用程序包含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.initializeTomcatWebServer.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.getTomcatWebServerTomcatServletWebServerFactory.java:438~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE] 位于org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServerTomcatServletWebServerFactory.java:191~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE] 在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServerServletWebServerApplicationContext.java:180~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE] 在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefreshServletWebServerApplicationContext.java:153~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE] ... 省略16个公共帧 原因:java.lang.IllegalStateException:StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]启动失败 位于org.springframework.boot.web.embedded.tomcat.TomcatWebServer.rethrowDeferredStartupExceptionsTomcatWebServer.java:171~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]
在org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initializeTomcatWebServer.java:110~[spring-boot-2.2.0.RELEASE.jar!/:2.2.0.RELEASE]org.springframework.context.ApplicationContextException::找不到命令

我找到了问题/解决方案:

1为application.properties添加了debug=true

2运行后,我发现:

Caused by: java.lang.IllegalStateException: Running project in development mode with no access to folder...
改为以生产模式构建项目,请参见

3在Vaadin GitHub上,有一种在生产中创建JAR文件的方法:

mvn clean package -Pproduction

这解决了问题,应用程序正在运行。

这是一个不完整的堆栈跟踪。应该有一个原因部分来说明Tomcat启动失败的原因。哪个版本的Vaadin?添加了完整的堆栈跟踪。是Vaadin 14.1.21,tomcat已经在8080上运行了吗?如果是,请尝试其他端口。很难从堆栈跟踪中判断发生了什么。这是生产构建还是开发构建?