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

无法在Eclipse中调试Quarkus应用:quarkus-application.dat缺失问题

Quarkus调试时找不到quarkus-application.dat导致会话终止的解决方法

问题描述

使用Quarkus 3.9.5开发RESTful应用,无论使用异步依赖(如Mutiny)还是同步模式,在Eclipse连接调试端口时都会触发异常:Quarkus尝试读取Maven仓库路径下的<M2_REPO>/repository/io/quarkus/quarkus/quarkus-application.dat文件,找不到该文件则抛出文件未找到异常,直接终止调试会话。经调试Quarkus代码确认问题出在Quarkus端,与Eclipse无关。

POM依赖片段

<properties>
    <!-- ... -->
    <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
    <quarkus.platform.version>3.9.5</quarkus.platform.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>${quarkus.platform.artifact-id}</artifactId>
            <version>${quarkus.platform.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-container-image-docker</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-mutiny</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-client-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-smallrye-health</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>io.smallrye.reactive</groupId>
        <artifactId>mutiny</artifactId>
    </dependency>
    <!-- ... -->
</dependencies>

已尝试的操作

  • 删除<M2_REPO>/repository/io目录,执行mvn clean install -U重新拉取并安装依赖
  • 创建空的quarkus-application.dat文件,但因内容格式不符合要求仍报错
  • 全局搜索主目录,未找到该文件的任何实例

异常触发位置:quarkus-bootstrap-runner包的QuarkusEntryPoint.java类

解决方案

1. 执行完整Quarkus构建生成元数据文件

quarkus-application.dat是Quarkus构建过程中生成的应用元数据文件,正常情况下会在构建产物中存在。执行完整构建命令:

mvn clean package -Dquarkus.package.type=uber-jar

根据你的打包需求调整quarkus.package.type参数(如fast-jar)。构建完成后检查target/quarkus-app目录,确认quarkus-application.dat已生成,调试时确保Quarkus指向该构建目录。

2. 添加调试JVM参数跳过仓库查找

在Eclipse的调试启动配置中添加以下JVM参数,强制Quarkus使用本地构建的元数据:

-Dquarkus.bootstrap.runner.mode=dev

该参数会让Quarkus以开发模式运行,优先读取本地构建资源,避免去Maven仓库查找dat文件。

3. 升级Quarkus版本

此问题可能是Quarkus 3.9.5的已知bug,尝试升级到最新稳定版本(如3.10.x系列):

<!-- 修改POM中的版本号 -->
<quarkus.platform.version>3.10.2</quarkus.platform.version>

执行mvn clean install -U更新依赖后重新调试。

4. 手动触发Quarkus元数据构建

执行Quarkus专属构建命令,专门生成应用元数据文件:

mvn quarkus:build

该命令会处理元数据生成逻辑,并将quarkus-application.dat放置到正确路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:35:01