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

如何让Quarkus识别Clojurephant构建的Clojure类?

在Quarkus中使用Clojure的类加载问题解决

问题背景

用Clojurephant插件在Quarkus里集成Clojure时,触发java.lang.ClassNotFoundException: joy.Interop错误。该插件在Vert.x、SpringBoot环境下运行正常,推测是Quarkus类加载机制导致无法找到Clojure编译后的类,需要调整类路径配置。

报错信息

Caused by: java.lang.ClassNotFoundException: joy.Interop 
  at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) 
  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) 
  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) 
  at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518) 
  at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468) 
  at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518) 
  at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468) 
  ... 15 more

复现步骤

  • 执行命令:./gradlew quarkusDev
  • 访问地址触发错误:http://localhost:8080/hello

解决方法

1. 给Quarkus添加额外类路径

在build.gradle中配置Quarkus插件,把Clojurephant编译输出目录加入类路径:

quarkus {
    extraClasspath += files("${project.buildDir}/classes/clojure/main")
}

Clojurephant默认将编译后的Clojure类输出到build/classes/clojure/main,这个配置能让Quarkus扫描到该目录下的类。

2. 修改Clojurephant编译输出目录

让Clojure编译后的类直接输出到Quarkus默认扫描的类路径目录,在build.gradle中添加:

clojure {
    compilation {
        outputDir = file("${project.buildDir}/classes/java/main")
    }
}

Quarkus会自动加载build/classes/java/main下的类,无需额外配置类路径。

3. 通过application.properties指定类路径

在src/main/resources/application.properties中添加:

quarkus.class-path=../build/classes/clojure/main

注意路径需根据项目实际结构调整,确保指向Clojure编译类的目录。

4. 调整Clojure依赖的类加载优先级

如果是Clojure核心库加载冲突,在application.properties中设置父类加载器优先加载Clojure:

quarkus.class-loader.parent-first-artifacts=org.clojure:clojure

同时确保build.gradle中Clojure依赖配置正确:

dependencies {
    implementation 'org.clojure:clojure:1.11.1'
    clojureImplementation 'org.clojure:clojure:1.11.1'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:31:13