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

Maven运行正常但打包Jar后GraalVM Polyglot依赖加载失败

问题分析与解决方案

问题根源

你遇到的核心问题是依赖打包不完整:

  • 你的pom.xml中,wasm、js、tools这三个GraalVM依赖指定了<type>pom</type>,它们是聚合类型的依赖(仅用于管理子依赖),而非可直接使用的jar包。
  • Maven Assembly插件的jar-with-dependencies描述符默认只会打包jar类型的依赖,不会自动解析pom类型依赖的传递jar包,导致GraalVM语言实现的核心类库没有被打进最终的fat jar中。
  • 而mvn clean compile exec:java运行时,Maven会自动解析所有依赖的传递关系,把pom依赖对应的实际语言jar加载到类路径,因此能正常执行。

解决方案

方案1:改用Maven Shade插件(推荐)

Shade插件比Assembly插件更擅长处理复杂依赖关系,能自动解析pom类型依赖的传递jar并打包进去,替换原Assembly插件的配置即可:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.4.1</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <!-- 配置Main类入口,支持直接用java -jar运行 -->
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>com.cfpolyglot.Main</mainClass>
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

方案2:直接引入实际语言jar依赖

GraalVM的pom聚合依赖对应实际的语言实现jar,你可以替换原pom类型依赖为具体的jar依赖:

<dependencies>
  <dependency>
    <groupId>org.graalvm.polyglot</groupId>
    <artifactId>polyglot</artifactId> 
    <version>23.1.1</version>
  </dependency>
  <!-- 替换原wasm pom依赖为实际jar -->
  <dependency>
    <groupId>org.graalvm.wasm</groupId>
    <artifactId>wasm</artifactId>
    <version>23.1.1</version>
  </dependency>
  <!-- 替换原js pom依赖为实际jar -->
  <dependency>
    <groupId>org.graalvm.js</groupId>
    <artifactId>js</artifactId>
    <version>23.1.1</version>
  </dependency>
  <!-- 替换原tools pom依赖为实际jar -->
  <dependency>
    <groupId>org.graalvm.tools</groupId>
    <artifactId>tools</artifactId>
    <version>23.1.1</version>
  </dependency>
</dependencies>

修改后,Assembly插件的jar-with-dependencies就能正常打包这些jar依赖了。

验证方法

打包完成后,解压生成的fat jar,检查是否包含org.graalvm.wasm、org.graalvm.js等包的类文件,确认依赖已被正确打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:10:55