1

我正在运行 Debian Wheezy、openjdk-7-jre、clojure 1.4.0 和 leiningen-1.7.1,它们都是从官方 repo 安装的。

我有一个这样的 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 来避免加载惰性 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 回答