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

从Clojure导入Java类报错:ClassNotFoundException解决方案求助

解决Clojure导入自定义Java类的ClassNotFoundException问题

问题根源

  1. 配置文件不兼容:你用clj命令启动项目,但project.clj是Leiningen的专属配置文件,clj默认读取deps.edn而非project.clj,导致你设置的:java-source-paths完全没生效。
  2. Java类结构可能有误:需确保void2d/目录下的Window.java正确声明包路径,且文件名与类名严格一致(Java大小写敏感):
    package void2d;
    
    public class Window {
        // 类实现代码
    }
    

修复方案

方案一:改用Leiningen运行(保留project.clj)

  1. 确保已安装Leiningen,在项目根目录(cloj\下)执行命令:
    lein run -m vtd
    
    注意:需给vtd.clj添加命名空间声明,否则Leiningen无法识别入口:
    (ns vtd)
    (import '(void2d Window))
    ;; 后续业务代码
    

方案二:适配clj命令(使用deps.edn,推荐)

  1. 在项目根目录创建deps.edn文件,内容如下:
    {:paths ["." "void2d/"]
     :aliases {:main {:main-opts ["vtd.clj"]}}}
    
  2. 执行以下命令启动项目:
    clj -M:main
    

额外检查项

  • 确认void2d/目录下是否有编译后的.class文件,若没有,Clojure会自动编译Java源文件,但前提是路径配置正确。
  • 验证Window.java的包声明package void2d;与目录结构void2d/完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:05:21