Я создал пустой монолитный проект 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
Нам нужно, чтобы файл имел расширение JAR из-за других инструментов, предназначенных для запуска приложений Java SE с этим типом файла.
Хотя я понимаю, что WAR - исполняемый файл, тип файла "WAR" всегда был предназначен для развертывания на контейнерах сервлетов или серверах приложений, а не для выполнения с java -jar
. Для этого инструменты ожидают, что файлы будут иметь тип JAR.