Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion troubleshooting classloader problems

Received: by 10.150.182.17 with SMTP id e17mr2731445ybf.25.1225201687349;
        Tue, 28 Oct 2008 06:48:07 -0700 (PDT)
Return-Path: <stuart.hallo...@gmail.com>
Received: from mail-gx0-f12.google.com (mail-gx0-f12.google.com [209.85.217.12])
        by mx.google.com with ESMTP id 39si8221745yxd.2.2008.10.28.06.48.06;
        Tue, 28 Oct 2008 06:48:06 -0700 (PDT)
Received-SPF: pass (google.com: domain of stuart.hallo...@gmail.com designates 209.85.217.12 as permitted sender) client-ip=209.85.217.12;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of stuart.hallo...@gmail.com designates 209.85.217.12 as permitted sender) smtp.mail=stuart.hallo...@gmail.com; dkim=pass (test mode) header...@gmail.com
Received: by mail-gx0-f12.google.com with SMTP id 5so4384560gxk.3
        for <clojure@googlegroups.com>; Tue, 28 Oct 2008 06:48:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:from:to
         :content-type:content-transfer-encoding:mime-version:subject:date
         :x-mailer;
        bh=S8l6jecRMQmzcGq4FPEAdIoqihZa00u3P1zEvpumVwE=;
        b=VfIy/DMZIeXhZFx+e6DxZs0o9LpGGL1bXllsloumpjdPWMIadz6OGSbSQ2Wpc7yX6e
         Dk7H5ofvjBAGLoK3pxcsHsp49NYuDgCF6rahKBvgsczTl0myBYjGyaM7EFTM51+pMoYJ
         IK51g9hayFewXCo2Kne8DRQp6Lyehkro+c5Qw=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:from:to:content-type:content-transfer-encoding
         :mime-version:subject:date:x-mailer;
        b=bfQOCDN/1lZJdeN/h8zeXjmzPXIfo1WSM5rwFO6A90znVZivq60AwvWxDyrOzBR+Xz
         flpeUdWybE8/x2rwI34k+w6tffmAitYNiUPrxQEzUevFP+IV5HzorQvZSAZrF3OGjpDK
         ummRlVJ8WToDNxBr0L0HPQcyPQ3ANjFcl1Zks=
Received: by 10.100.31.10 with SMTP id e10mr7080088ane.83.1225201686244;
        Tue, 28 Oct 2008 06:48:06 -0700 (PDT)
Return-Path: <stuart.hallo...@gmail.com>
Received: from ?10.0.1.193? (rrcs-70-62-101-98.midsouth.biz.rr.com [70.62.101.98])
        by mx.google.com with ESMTPS id h34sm2278163wxd.9.2008.10.28.06.48.05
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Tue, 28 Oct 2008 06:48:05 -0700 (PDT)
Message-Id: <D50AC13E-0676-4B4E-8541-1C807E00A...@gmail.com>
From: Stuart Halloway <stuart.hallo...@gmail.com>
To: clojure@googlegroups.com
Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v929.2)
Subject: troubleshooting classloader problems
Date: Tue, 28 Oct 2008 09:48:03 -0400
X-Mailer: Apple Mail (2.929.2)

Hi all,

When I am troubleshooting classloader problems I find myself wanting  
to know the list of URLs currently on the classpath. I didn't find  
this exposed anywhere, so I wrote the functions below.

Usage:

(take 3 (classpath-url-seq))
-> ("file:/Users/stuart/relevance/personal/SHCLOJ_svn/Book/code/"
       "file:/Users/stuart/repos/clojure-contrib/clojure-contrib.jar"
       "file:/Users/stuart/devtools/java/joda-time-1.5.2/joda- 
time-1.5.2.jar")

Of course to be most helpful this needs to be in clojure.jar --  
otherwise you might have classloader problems loading the classloader  
help code. :-) Not sure if this is general enough to deserve to be in  
clojure.jar, but you're welcome to it if others find it useful.

Stuart

; -------------------------------------------------------
(defn classloader-seq
   ([] (classloader-seq (clojure.lang.RT/baseLoader)))
   ([cl]
      (loop [loaders (vector cl)]
        (if (nil? (last loaders))
	 (drop-last loaders)
	 (recur (conj loaders (.getParent (last loaders))))))))

(defn classpath-url-seq [& args]
   (map (memfn toExternalForm)
        (reduce concat
	       (map (memfn getURLs)
		    (apply classloader-seq args)))))