无法使用嵌入式 Tomcat 浏览至 spring 引导应用程序
Unable to browse to spring boot application using embedded Tomcat
我正在开发一个相当大的 MVC 项目,该项目曾经 运行(完美地)仅使用 spring MVC,而不是 spring 启动。我已经完成将它转换为 spring 引导,并且它 运行 在 Netbeans 中完美无缺,当 运行 在我的开发机器上作为 Netbeans 之外的独立 JAR 时。
我将 JAR 文件传输到其目标服务器,根据控制台一切正常启动,我收到此消息:Tomcat started on the port(s): 8081 (HTTP) with context path '/MDHIS'
。但是,我无法像在我的机器上使用以下 URL: http://localhost:8081/MDHIS/
那样浏览到它。
我将 tomcat 设置为调试模式,它记录了一些有趣的事情:
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.269] o.a.j.s.JspServlet
: JspEngine --> /WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.270] o.a.j.s.JspServlet
: ServletPath: /WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.270] o.a.j.s.JspServlet
: PathInfo: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.272] o.a.j.s.JspServlet
: RealPath: C:\Users\Administrator\AppData\Local\Temp\tomcat-
docbase.4901819852507265388.8080\WEB-INF\views\login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.273] o.a.j.s.JspServlet
: RequestURI: /MDHIS/WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.274] o.a.j.s.JspServlet
: QueryString: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.275] o.a.c.c.C.[.[.[.[jsp]
: Disabling the response for further output
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.277] o.a.c.c.C.[.[localhost]
: Processing ErrorPage[errorCode=0, location=/error]
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.315] o.a.j.s.JspServlet
: JspEngine --> /WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.315] o.a.j.s.JspServlet
: ServletPath: /WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.316] o.a.j.s.JspServlet
: PathInfo: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.317] o.a.j.s.JspServlet
: RealPath: C:\Users\Administrator\AppData\Local\Temp\tomcat-
docbase.4901819852507265388.8080\WEB-INF\views\error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.318] o.a.j.s.JspServlet
: RequestURI: /MDHIS/WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.319] o.a.j.s.JspServlet
: QueryString: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.319] o.a.c.c.C.[.[.[.[jsp]
: Disabling the response for further output
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.320] o.a.c.c.C.[.[.[.
[dispatcherServlet] : Disabling the response for further output
我查看了 docbase 文件夹,但没有向其中添加 JSP 或 类。在不同的环境/操作系统/网络上,我对这项工作的结果喜忧参半。有没有人见过这种行为?
******编辑******
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>com.mdenis</groupId>
<artifactId>MDHIS_Common</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!--JAVA-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<!--SPRING-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--MICROSOFT-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
<!--HIBERNATE-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<!--HAPI-->
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-base</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v26</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v25</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v24</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v231</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v23</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v22</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v21</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>MDHIS_Common</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
</plugins>
</build>
</project>
网络客户端:
<?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>com.mdenis</groupId>
<artifactId>MDHIS_WebClient</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<packaging>war</packaging>-->
<name>MDHIS_WebClient</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!--JAVA-->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.json.bind</groupId>
<artifactId>javax.json.bind-api</artifactId>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--GLASSFISH-->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.3</version>
</dependency>
<!--TOMCAT-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--JASPER REPORTS-->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.7.0</version>
</dependency>
<!--SIGAR-->
<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>
<!--LOG4J2-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
</dependency>
<!--YASSON-->
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>yasson</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<!--MDHIS_COMMON-->
<dependency>
<groupId>com.mdenis</groupId>
<artifactId>MDHIS_Common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>java.net-Public</id>
<name>Maven Java Net Snapshots and Releases</name>
<url>https://maven.java.net/content/groups/public/</url>
</repository>
<repository>
<id>yasson-snapshots</id>
<name>Yasson Snapshots repository</name>
<url>https://repo.eclipse.org/content/repositories/yasson-snapshots</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
结论
感谢所有提供帮助的人!虽然打包为 JAR 文件时它在某些系统上工作正常,但对 WAR 文件的更改是修复它的原因。遗憾的是,我不能再 运行 Netbeans 中的项目,因为它无法识别 Tomcat 服务器嵌入在其自身中,但在 2 个系统上使用 java -jar 时一切正常(Windows Server 2016 和 Ubuntu LTS 18.04) 之前无法正常工作。
谢谢
描述的症状听起来好像 classLoader 没有初始化 SpringBoot 应用程序 class。 SpringBoot 首先使用提供的配置启动 Tomcat(这通常总是有效),然后尝试启动 SpringBoot 应用程序本身。如果 classLoader 失败,接下来是 "the website won't load"。
您可以检查两件事:
1) 你用ClassLoader.getSystemClassLoader()
吗?不要因为不支持SpringBoot结构(嵌套jar)
2) 您是否在应用程序的任何地方使用了 java.util.Logging
?不要因为它使用 ClassLoader.getSystemClassLoader()
您可以在此处阅读更多相关信息:https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#executable-jar-restrictions
我想还有第三个;
3) 检查依赖项的版本兼容性(因为这是引导的 MVC)
https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#appendix-dependency-versions
祝你好运。
这与其说是一个答案,不如说是一条通往最终成功的道路。我将从示例 "Spring Boot Embedded Tomcat" 项目开始。 Dev Zone has one here. Another example is here. 虽然这些太长了,无法包含在此处,但任何其他工作示例也应该没问题。
在当前失败的环境中获取 运行。
接下来,添加您的详细信息。如果您可以在单独的 'chunks' 中执行此操作,那会更好,因为您可以看到您添加的部分破坏了东西。
最后,我在 Randy 的回复中回应了他的第一个想法 - 这可能是一个类路径问题。
面对此类问题,我会探究本地计算机(应用程序 运行 正常)和服务器(同一个应用程序出现问题)之间的环境差异。我要检查的前几件事如下:
- 检查 JSP 是否被编译到 Tomcat 的工作目录。
- 检查 JAVA_HOME 由 Tomcat 拾取的变量。
- 检查机器上是否确实安装了 JDK(而不仅仅是 JRE)。
- 检查为 Tomcat 配置的 Java 版本是否受使用的 Spring 引导版本支持。
- 检查有效 pom 中具有范围的依赖项
"provided"、"runtime" 或 "system"。
但首先,请参考这些 JSP Limitations with Spring Boot 并注意您需要 使用 war 包装——使用时不支持 JSP一个可执行的 jar。此可执行文件 war 将在使用 java -jar
启动时运行,并且还可以部署到任何标准容器。
要创建 war 包装,请在声明工件 ID 的 pom 中包含 <packaging>war</packaging>
。
您可能会发现此 Spring Boot JSP sample useful. This another sample 也可能有帮助。
希望以上意见能带来解决方案。
我正在开发一个相当大的 MVC 项目,该项目曾经 运行(完美地)仅使用 spring MVC,而不是 spring 启动。我已经完成将它转换为 spring 引导,并且它 运行 在 Netbeans 中完美无缺,当 运行 在我的开发机器上作为 Netbeans 之外的独立 JAR 时。
我将 JAR 文件传输到其目标服务器,根据控制台一切正常启动,我收到此消息:Tomcat started on the port(s): 8081 (HTTP) with context path '/MDHIS'
。但是,我无法像在我的机器上使用以下 URL: http://localhost:8081/MDHIS/
那样浏览到它。
我将 tomcat 设置为调试模式,它记录了一些有趣的事情:
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.269] o.a.j.s.JspServlet
: JspEngine --> /WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.270] o.a.j.s.JspServlet
: ServletPath: /WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.270] o.a.j.s.JspServlet
: PathInfo: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.272] o.a.j.s.JspServlet
: RealPath: C:\Users\Administrator\AppData\Local\Temp\tomcat-
docbase.4901819852507265388.8080\WEB-INF\views\login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.273] o.a.j.s.JspServlet
: RequestURI: /MDHIS/WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.274] o.a.j.s.JspServlet
: QueryString: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.275] o.a.c.c.C.[.[.[.[jsp]
: Disabling the response for further output
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.277] o.a.c.c.C.[.[localhost]
: Processing ErrorPage[errorCode=0, location=/error]
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.315] o.a.j.s.JspServlet
: JspEngine --> /WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.315] o.a.j.s.JspServlet
: ServletPath: /WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.316] o.a.j.s.JspServlet
: PathInfo: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.317] o.a.j.s.JspServlet
: RealPath: C:\Users\Administrator\AppData\Local\Temp\tomcat-
docbase.4901819852507265388.8080\WEB-INF\views\error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.318] o.a.j.s.JspServlet
: RequestURI: /MDHIS/WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.319] o.a.j.s.JspServlet
: QueryString: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.319] o.a.c.c.C.[.[.[.[jsp]
: Disabling the response for further output
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.320] o.a.c.c.C.[.[.[.
[dispatcherServlet] : Disabling the response for further output
我查看了 docbase 文件夹,但没有向其中添加 JSP 或 类。在不同的环境/操作系统/网络上,我对这项工作的结果喜忧参半。有没有人见过这种行为?
******编辑******
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>com.mdenis</groupId>
<artifactId>MDHIS_Common</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!--JAVA-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<!--SPRING-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--MICROSOFT-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
<!--HIBERNATE-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<!--HAPI-->
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-base</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v26</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v25</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v24</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v231</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v23</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v22</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v21</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>MDHIS_Common</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
</plugins>
</build>
</project>
网络客户端:
<?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>com.mdenis</groupId>
<artifactId>MDHIS_WebClient</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<packaging>war</packaging>-->
<name>MDHIS_WebClient</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<dependencies>
<!--JAVA-->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.json.bind</groupId>
<artifactId>javax.json.bind-api</artifactId>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--GLASSFISH-->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.3</version>
</dependency>
<!--TOMCAT-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--JASPER REPORTS-->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.7.0</version>
</dependency>
<!--SIGAR-->
<dependency>
<groupId>org.fusesource</groupId>
<artifactId>sigar</artifactId>
<version>1.6.4</version>
</dependency>
<!--LOG4J2-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
</dependency>
<!--YASSON-->
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>yasson</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<!--MDHIS_COMMON-->
<dependency>
<groupId>com.mdenis</groupId>
<artifactId>MDHIS_Common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>java.net-Public</id>
<name>Maven Java Net Snapshots and Releases</name>
<url>https://maven.java.net/content/groups/public/</url>
</repository>
<repository>
<id>yasson-snapshots</id>
<name>Yasson Snapshots repository</name>
<url>https://repo.eclipse.org/content/repositories/yasson-snapshots</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
结论
感谢所有提供帮助的人!虽然打包为 JAR 文件时它在某些系统上工作正常,但对 WAR 文件的更改是修复它的原因。遗憾的是,我不能再 运行 Netbeans 中的项目,因为它无法识别 Tomcat 服务器嵌入在其自身中,但在 2 个系统上使用 java -jar 时一切正常(Windows Server 2016 和 Ubuntu LTS 18.04) 之前无法正常工作。
谢谢
描述的症状听起来好像 classLoader 没有初始化 SpringBoot 应用程序 class。 SpringBoot 首先使用提供的配置启动 Tomcat(这通常总是有效),然后尝试启动 SpringBoot 应用程序本身。如果 classLoader 失败,接下来是 "the website won't load"。
您可以检查两件事:
1) 你用ClassLoader.getSystemClassLoader()
吗?不要因为不支持SpringBoot结构(嵌套jar)
2) 您是否在应用程序的任何地方使用了 java.util.Logging
?不要因为它使用 ClassLoader.getSystemClassLoader()
您可以在此处阅读更多相关信息:https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#executable-jar-restrictions
我想还有第三个;
3) 检查依赖项的版本兼容性(因为这是引导的 MVC) https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#appendix-dependency-versions
祝你好运。
这与其说是一个答案,不如说是一条通往最终成功的道路。我将从示例 "Spring Boot Embedded Tomcat" 项目开始。 Dev Zone has one here. Another example is here. 虽然这些太长了,无法包含在此处,但任何其他工作示例也应该没问题。
在当前失败的环境中获取 运行。
接下来,添加您的详细信息。如果您可以在单独的 'chunks' 中执行此操作,那会更好,因为您可以看到您添加的部分破坏了东西。
最后,我在 Randy 的回复中回应了他的第一个想法 - 这可能是一个类路径问题。
面对此类问题,我会探究本地计算机(应用程序 运行 正常)和服务器(同一个应用程序出现问题)之间的环境差异。我要检查的前几件事如下:
- 检查 JSP 是否被编译到 Tomcat 的工作目录。
- 检查 JAVA_HOME 由 Tomcat 拾取的变量。
- 检查机器上是否确实安装了 JDK(而不仅仅是 JRE)。
- 检查为 Tomcat 配置的 Java 版本是否受使用的 Spring 引导版本支持。
- 检查有效 pom 中具有范围的依赖项 "provided"、"runtime" 或 "system"。
但首先,请参考这些 JSP Limitations with Spring Boot 并注意您需要 使用 war 包装——使用时不支持 JSP一个可执行的 jar。此可执行文件 war 将在使用 java -jar
启动时运行,并且还可以部署到任何标准容器。
要创建 war 包装,请在声明工件 ID 的 pom 中包含 <packaging>war</packaging>
。
您可能会发现此 Spring Boot JSP sample useful. This another sample 也可能有帮助。
希望以上意见能带来解决方案。