gpt4 book ai didi

java - Spring Boot 的 JHipster WAR Artifact 重命名为 JAR 无法运行

转载 作者:行者123 更新时间:2023-12-02 01:58:04 25 4
gpt4 key购买 nike

我创建了一个空的、整体的 JHipster 项目。

构建 JHipster 项目后,会自动创建可执行的 WAR 文件。将此文件重命名为 JAR 后,应用程序将不再按预期运行。

jhipster-apps/foobar/target   ✗                                                                                                                                           1d ⚑
▶ ls -l
total 216096
-rw-r--r-- 1 brborges staff 431 27 Aug 12:29 Dockerfile
drwxr-xr-x 105 brborges staff 3360 27 Aug 12:29 cache-loader
drwxr-xr-x 9 brborges staff 288 27 Aug 12:29 classes
-rw-r--r-- 1 brborges staff 188 27 Aug 12:29 entrypoint.sh
drwxr-xr-x 10 brborges staff 320 27 Aug 12:30 foobar-0.1.1-SNAPSHOT
-rwxr--r-- 1 brborges staff 58688877 27 Aug 12:30 foobar-0.1.1-SNAPSHOT.war
-rw-r--r-- 1 brborges staff 51095430 27 Aug 12:30 foobar-0.1.1-SNAPSHOT.war.original
drwxr-xr-x 3 brborges staff 96 27 Aug 12:29 generated-sources
drwxr-xr-x 3 brborges staff 96 27 Aug 12:33 generated-test-sources
drwxr-xr-x 3 brborges staff 96 27 Aug 12:30 maven-archiver
drwxr-xr-x 3 brborges staff 96 27 Aug 12:29 maven-status
drwxr-xr-x 32 brborges staff 1024 27 Aug 12:30 surefire-reports
drwxr-xr-x 7 brborges staff 224 27 Aug 12:29 test-classes
drwxr-xr-x 3 brborges staff 96 27 Aug 12:30 test-results
drwxr-xr-x 9 brborges staff 288 27 Aug 12:29 www

jhipster-apps/foobar/target ✗ 1d ⚑
▶ cp foobar-0.1.1-SNAPSHOT.war foobar-0.1.1-SNAPSHOT.jar

jhipster-apps/foobar/target ✗ 1d ⚑
▶ diff foobar-0.1.1-SNAPSHOT.war foobar-0.1.1-SNAPSHOT.jar

jhipster-apps/foobar/target ✗ 1d ⚑
▶ echo $?
0

执行WAR文件:

jhipster-apps/foobar/target   ✗                                                                                                                                          1d ⚑  ⍉
▶ java -jar foobar-0.1.1-SNAPSHOT.war &
[1] 18713
▶ curl -I http://localhost:8080
HTTP/1.1 200 OK
Expires: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
X-XSS-Protection: 1; mode=block
Pragma: no-cache
Accept-Ranges: bytes
Date: Mon, 27 Aug 2018 19:51:08 GMT
Connection: keep-alive
Last-Modified: Mon, 27 Aug 2018 19:30:48 GMT
X-Content-Type-Options: nosniff
Content-Length: 992
Content-Type: text/html;charset=utf-8
Content-Language: en-CA

执行复制的 JAR 文件:

jhipster-apps/foobar/target   ✗                                                                                                                                          1d ⚑  ⍉
▶ java -jar foobar-0.1.1-SNAPSHOT.jar &
[1] 18783
▶ curl -I http://localhost:8080
HTTP/1.1 404 Not Found
Expires: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
X-XSS-Protection: 1; mode=block
Pragma: no-cache
Date: Mon, 27 Aug 2018 19:54:56 GMT
Connection: keep-alive
X-Content-Type-Options: nosniff
Transfer-Encoding: chunked
Content-Type: application/json;charset=UTF-8

由于其他工具被设计为使用此类文件运行 Java SE 应用程序,因此我们需要该文件具有 JAR 扩展名。

虽然我知道 WAR 是可执行的,但文件类型“WAR”始终设计为部署在 Servlet 容器或应用程序服务器上,而不是使用 java -jar 执行。为此,工具期望文件为 JAR 类型。

最佳答案

您需要更改 <packaging>您的 pom.xml 部分来自warjar如果您想创建 JAR 文件而不是 WAR。您还需要移动 src/main/webapp 的内容到 src/main/static (或另一个supported location)

尽管您可以使用 java -jar myApp.war 运行 Spring Boot WAR 文件,内部结构与可执行 JAR 不同。 WAR 文件在根目录(org.springframework.boot.loader 包下)包含一些有限的类,这些类提供了足够的代码来启动 Web 服务器和 Bootstrap 本身。然后,Web 服务器将考虑 WEB-INF/libWEB-INF/classes .

对于可执行 JAR 文件,考虑的文件夹是 BOOT-INF/libBOOT-INF/classes .

重命名可能在过去偶然起作用,但这从来不是推荐的方法。

关于java - Spring Boot 的 JHipster WAR Artifact 重命名为 JAR 无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com