簡體   English   中英

Java Spring 引導可執行文件 JAR 文件未運行到另一台機器

[英]Java Spring boot executable JAR file not running into another machine

我正在嘗試將 package 一個 Java spring 引導(Maven)項目到 Z529E634C8C25A170CF 文件中這樣我就可以將該 JAR 文件放入另一台計算機並簡單地運行它。 該文件是在“目標”文件夾中創建的。 我可以通過以下方式正常運行項目:

java -jar target/project.jar

但是每當我將 Jar 文件帶到另一個地方(例如,進入另一台 PC)並嘗試像這樣運行時:

java -jar project.jar

它顯示白色 Label 錯誤 404 頁面- localhost:8080

如何將 package 項目作為獨立的 JAR 文件運行而不會出現任何此類錯誤?

這是我的application.properties文件內容:

 spring.datasource.url=jdbc:mariadb://localhost:3306/sample spring.datasource.username=root spring.datasource.password=**** spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB103Dialect spring.jpa.hibernate.ddl-auto=update ## MULTIPART (MultipartProperties) # Enable multipart uploads spring.servlet.multipart.enabled=true # Threshold after which files are written to disk. spring.servlet.multipart.file-size-threshold=2KB # Max file size. spring.servlet.multipart.max-file-size=200MB # Max Request Size spring.servlet.multipart.max-request-size=215MB ## File Storage Properties # All files uploaded through the REST API will be stored in this directory file.upload-dir=/Users/noticepush/notices spring.mvc.view.prefix: /WEB-INF/jsp/ spring.mvc.view.suffix: .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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.1</version> <relativePath/> <.-- lookup parent from repository --> </parent> <groupId>com.tech</groupId> <artifactId>StressDetection</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>StressDetection</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.4.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>


對我有什么建議嗎?
注意:請不要建議使用 WAR 包裝。 我正在嘗試將項目分發為 JAR package。

spring.datasource.url=jdbc:mariadb://localhost:3306/sample您的應用程序在某些本地數據庫中有依賴關系。

可能是您的計算機中存在數據庫並且應用程序可以訪問該數據庫,因此應用程序可以正確啟動和播放。

在其他計算機上,數據庫可能不存在或無法從應用程序訪問,因此 Spring 上下文在初始化期間失敗,因此您無法訪問 web 應用程序!

如果如評論中所指出的,這不是問題,那么也可能存在另一個問題。

您可以在pom.xml中替換以下內容

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

<build>
    <finalName>${project.artifactId}</finalName>
    <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>

因此,最終的 Jar 是重新打包的 Fat jar,其中還包含所需的所有運行時依賴項。

我過去收到此類錯誤您遇到此錯誤是因為 spring 引導沒有默認網頁

要修復它,您只需在src/main/resources/statics directory statics 目錄中添加一個簡單的 html 文件( index.html

The issue is that when you use java -*.jar to deploy any springboot application, the jsp files will not be present in the embedded tomcat and while trying to serve the request you will get a 404 PAGE NOT FOUND. 這是因為 jar 包裝,jsp 文件沒有從 WEB-INF 文件夾中復制。 如果您將 jsp 文件保存在 META-INF/resources 文件夾下,同時使用 jar 作為包裝,它應該可以工作。

相關問題: 為什么 Spring 啟動不支持 jsp 而如果我們添加正確的 jar 引用它可以呈現頁面

在這種情況下,您可能必須配置視圖解析器。 通常我們將 JSP 文件放在 ${project.basedir}/main/webapp/WEB-INF/jsp/ 中。 在這種情況下,您必須在 application.properties 中添加以下 2 個配置參數。

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM