3

次のファイルに保存されているコードを実行するために、ターミナルで次のコマンドを実行しています。

java -cp clojure.jar clojure.main thumbmaker.clj

thumbmaker.cljのコンテンツはどこにありますか(このコードはいくつかの場所で参照されています):

(import javax.imageio.ImageIO)
(import java.awt.image.BufferedImage)
(use '[clojure.java.io :only [as-file input-stream output-stream] :as io])

(defn make-thumbnail-generic [input new-filename width]
  (let [img (javax.imageio.ImageIO/read input)
        imgtype (java.awt.image.BufferedImage/TYPE_INT_ARGB)
        width (min (.getWidth img) width)
        height (* (/ width (.getWidth img)) (.getHeight img))
        simg (java.awt.image.BufferedImage. width height imgtype)
        g (.createGraphics simg)]
    (.drawImage g img 0 0 width height nil)
    (.dispose g)

(defn make-thumbnail-from-file [filename new-filename width]
  (make-thumbnail-generic filename new-filename width))

(make-thumbnail-from-file "thumb.png" "test.png" 100)

そして、次のエラーが発生します。

スレッド"main"の例外java.lang.IllegalArgumentException:一致するメソッドが見つかりません:read(thumbmaker.clj:0)

REPLのimportステートメントとuseステートメントを個別にチェックしましたが、かなり問題なく受け入れられているようです。

ImageIOのJavaリファレンスを確認しましたが、読み取り機能があります。

私はJava-Interopの記事を読みましたが、これは非常に標準的な方法のようです。そのため、読み取りが機能しない理由がわかりません。

4

1 に答える 1

5

http://docs.oracle.com/javase/1.5.0/docs/api/javax/imageio/ImageIO.htmlを参照してください。

javax.imageio.ImageIO/read は、URL、File、InputStream、または ImageInputStream を想定しています。文字列ではありません。

することで問題が解決(javax.imageio.ImageIO/read (as-file input))します。

于 2013-03-10T13:30:11.240 に答える