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

如何将GitHub上的Java摄像头项目引入Clojure项目并实现画面捕获?

如何将GitHub上的Java摄像头项目引入Clojure项目并实现画面捕获?

别着急,我来一步步帮你解决问题,主要分为依赖引入和修正Clojure代码两部分:

一、先搞定依赖:无需手动导入GitHub项目

你提到的sarxos/webcam-capture项目已经发布到Maven中央仓库了,所以不用手动下载GitHub代码,直接通过Clojure的依赖管理工具(比如Leiningen或deps.edn)添加依赖就行:

如果用Leiningen(project.clj)

在你的project.clj的:dependencies里添加这一行:

[com.github.sarxos/webcam-capture "0.3.12"]

(可以自行查询最新版本号,0.3.12是比较稳定的常用版本)

如果用deps.edn

在deps.edn的:deps里添加:

com.github.sarxos/webcam-capture {:mvn/version "0.3.12"}

添加完依赖后,重启你的REPL或者重新构建项目,这样Clojure就能找到com.github.sarxos.webcam.Webcam这个类了。

二、修正你的Clojure代码

你的代码里有不少Java互操作的语法错误,我帮你调整成正确的写法,同时保留原有的异常处理逻辑:

(ns webcam2.core
  (:import [com.github.sarxos.webcam Webcam]
           [javax.imageio ImageIO]
           [java.io File IOException]))

(defn -main []
  (let [webcam (Webcam/getDefault)]
    (.open webcam)
    (try
      (ImageIO/write (.getImage webcam)
                     "JPG"
                     (File. "C:\\Users\\Joe User\\Desktop\\firstClojureCapture.JPG"))
      (catch IOException e
        (throw (RuntimeException. e))))))

代码里的关键修正点:

  • 导入写法优化:把多个分散的:import合并成一个,用方括号包裹同包下的类,更符合Clojure的简洁风格
  • Java静态方法调用:Java里的Webcam.getDefault()在Clojure里要写成(Webcam/getDefault),而非错误的(getDefault.)
  • 实例方法调用:调用对象的方法要用(.方法名 对象 参数)的格式,比如(.open webcam)而不是(webcam. open.),(.getImage webcam)而不是webcam. getImage.
  • 构造函数调用:创建File对象要用(File. "路径"),而非错误的new .File ("路径")
  • 异常处理:用Clojure原生的try/catch语法来捕获IOException,和原Java逻辑保持一致

三、解释你遇到的错误

  • com.github.sarxos.webcam.Webcam cannot be resolved:这是因为你的项目没有添加这个Java库的依赖,Clojure找不到对应的类文件,添加依赖后就能解决。
  • Unused Imports:因为你之前的代码没有正确使用导入的类(语法错误导致调用方式不对),编辑器误以为这些导入没用,修正代码后这个提示就会消失。

备注:内容来源于stack exchange,提问作者LionelGoulet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:23:00