You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot部署JBoss EAP 7.3请求报错:无效文件路径求助

问题描述

我参与的SpringBoot项目部署在RedHat JBoss EAP 7.3服务器上,服务器启动正常,同事环境可正常运行,但我用PostMan请求/proteccion/actuacion/1接口时触发以下错误:

ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /proteccion/actuacion/1: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.io.IOError: java.io.FileNotFoundException: Invalid file path.

项目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.4.5</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <groupId>co.gov.sic.proteccion</groupId>
    <artifactId>api-proteccion</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>api-proteccion</name>
    <description>Api Proteccion</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
            <!-- https://mvnrepository.com/artifact/org.docx4j/docx4j -->
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j</artifactId>
            <version>6.1.2</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20210307</version>
        </dependency>
        
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.1.0</version>
        </dependency>
        
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.14</version>
        </dependency>
        <!-- Se evita el uso del tomcat -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.5.2</version>
        </dependency>

        <dependency>
            <groupId>com.ibm.informix</groupId>
            <artifactId>jdbc</artifactId>
            <version>4.50.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <version>3.1.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
    </dependencies>

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

</project>

相关日志信息

09:18:06,637 INFO  [io.undertow.servlet] (default task-1) Initializing Spring DispatcherServlet 'dispatcherServlet'
09:18:06,637 INFO  [org.springframework.web.servlet.DispatcherServlet] (default task-1) Initializing Servlet 'dispatcherServlet'
09:18:06,641 INFO  [org.springframework.web.servlet.DispatcherServlet] (default task-1) Completed initialization in 3 ms
09:18:06,728 INFO  [stdout] (default task-1) Hibernate: select actuacion0_.codi_actu as codi_act1_0_0_, actuacion0_.desc_actu as desc_act2_0_0_, actuacion0_.esta_actu as esta_act3_0_0_, actuacion0_.fech_crea as fech_cre4_0_0_, actuacion0_.fech_vige as fech_vig5_0_0_, actuacion0_.noab_actu as noab_act6_0_0_, actuacion0_.nomb_actu as nomb_act7_0_0_, actuacion0_.novi_actu as novi_act8_0_0_, actuacion0_.tipo_actu as tipo_act9_0_0_ from actuacion actuacion0_ where actuacion0_.codi_actu=?

09:18:09,561 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /proteccion/actuacion/1: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.io.IOError: java.io.FileNotFoundException: Invalid file path
排查思路与解决办法

从日志看,Hibernate已成功执行查询获取数据,数据库交互无问题,错误出在后续文件操作环节。结合Invalid file path错误,从以下方向排查:

  • 检查接口文件路径逻辑
    查看/proteccion/actuacion/1接口实现代码,确认是否涉及文件读写(pom包含docx4j、poi依赖,大概率有生成文档/导出Excel操作)。核对路径是否为硬编码的本地路径(比如Windows路径在Linux服务器不兼容)、是否依赖未正确配置的环境变量/配置参数,同时检查路径中是否有特殊字符、未转义的分隔符,Linux系统统一用/作为路径分隔符。

  • 验证服务器目录权限与存在性
    确认代码中指定的目标目录在JBoss服务器上是否存在,检查JBoss运行用户对该目录是否有读写权限,Linux下可通过chmod/chown调整权限。若用相对路径,确认基准目录是否正确(比如相对于JBoss的bin目录还是应用部署目录)。

  • 修复依赖冲突
    pom中commons-codec存在1.14和1.15两个版本,可能导致依赖冲突,建议保留高版本并移除重复依赖。同时检查docx4j、poi与Spring Boot 2.4.5的兼容性,版本不匹配可能引发文件路径解析异常。

  • 核对JBoss配置
    检查JBoss的standalone.xml或domain.xml中文件系统、临时目录的配置,确认是否限制了应用的文件访问路径,同时验证jboss.home.dir配置是否正确,避免相对路径解析错误。

  • 同步环境配置
    对比你的服务器与同事环境的操作系统版本、JBoss配置、环境变量、应用配置文件(如application.properties/application.yml),检查是否存在本地开发时的测试代码(比如硬编码本地路径)未移除,导致部署后路径无效。

内容的提问来源于stack exchange,提问作者Dante666z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:36:19