1

Debian Wheezy、openjdk-7-jre、clojure 1.4.0、および leiningen-1.7.1 を実行しており、すべて公式リポジトリからインストールされています。

次のような project.clj があります。

(defproject guess-film "1.0.0-SNAPSHOT"
  :description "FIXME"
  :dependencies [
    [org.clojure/clojure "1.4.0"],
    [clj-http "0.5.0"],
    [clj-tagsoup "0.3.0" :exclusions [net.java.dev.stax-utils/stax-utils]]
  ]
  :main guess-film.core
)

その段階でわかるように、stax-utils を除外しましたが、実際には clj-tagsoup の Github ページに記載されています。

次に、この src/guess-film/core.clj があります。

ns guess-film.core
    (:require
        [clj-http.client :as client]
        [pl.danieljanus.tagsoup :as parser :refer [parse parse-string]] :verbose
    )
)

そして、私がしようとすると

lein repl

満足していないstax-utilsが原因でクラッシュすると思います:

...
(clojure.core/load "/pl/danieljanus/tagsoup")
(clojure.core/load "/clojure/zip")
(clojure.core/in-ns 'pl.danieljanus.tagsoup)
(clojure.core/alias 'zip 'clojure.zip)
(clojure.core/load "/clojure/xml")
(clojure.core/in-ns 'pl.danieljanus.tagsoup)
(clojure.core/alias 'xml 'clojure.xml)
(clojure.core/load "/clojure/data/xml")
(clojure.core/in-ns 'clojure.data.xml)
(clojure.core/alias 'str 'clojure.string)
(clojure.core/in-ns 'pl.danieljanus.tagsoup)
(clojure.core/alias 'lazy-xml 'clojure.data.xml)
ClassNotFoundException javanet.staxutils.ContentHandlerToXMLEventWriter  java.net.URLClassLoader$1.run (URLClassLoader.java:366)

:refer を使用して lazy-xml の読み込みを回避しようとしましたが、うまくいかないと思います。また、「:use ... :only [parse parse-string]」も試しましたが、成功しませんでした。

使用しないものをロードするのは好きではありません:)

とにかくlazy-xmlを読み込もうとするのはclj-tagsoupの失敗ですか?その依存関係から逃れることができない場合、パフォーマンス ヒットになりますか?

4

1 に答える 1

1

javanet.staxutils.Content... クラスをインポートしているのは clj-tagsoup であるため、それについてできることはあまりないと思います。

パフォーマンスに影響を与えることはありません。別のクラスをロードしても、大きな違いはなく、メモリもあまり使用しません。

于 2012-07-29T21:47:29.420 に答える