Closed brw314 closed 14 years ago
Not for me:
$ ant clean jar ...
$ jar tf clj-apache-http.jar | fgrep ".class" | wc -l 50
What error message do you get? Make sure you have clojure.jar and clojure-contrib.jar in /opt/clojure and /opt/clojure-contrib.
Directory of C:\clojure\clj-apache-http\opt\clojure-contrib
02/16/2010 09:59 AM
C:\clojure\clj-apache-http>dir opt\clojure Volume in drive C has no label. Volume Serial Number is 24E5-47D5
Directory of C:\clojure\clj-apache-http\opt\clojure
02/16/2010 09:58 AM
C:\clojure\clj-apache-http>ant clean jar Buildfile: build.xml
clean: [delete] Deleting directory C:\clojure\clj-apache-http\deploy [delete] Deleting directory C:\clojure\clj-apache-http\classes [delete] Deleting: C:\clojure\clj-apache-http\clj-apache-http.jar
init: [mkdir] Created dir: C:\clojure\clj-apache-http\classes [mkdir] Created dir: C:\clojure\clj-apache-http\deploy
compile_clojure:
jar: [jar] Building MANIFEST-only jar: C:\clojure\clj-apache-http\clj-apache-ht tp.jar
BUILD SUCCESSFUL Total time: 3 seconds C:\clojure\clj-apache-http>dir Volume in drive C has no label. Volume Serial Number is 24E5-47D5
Directory of C:\clojure\clj-apache-http
02/16/2010 12:13 PM
Ah, you're using Windows. You'll need to use -D to point to the jar files when you invoke Ant. Read the comment at the top of the build script.
C:\clojure\clj-apache-http>dir c:\clojure\clj-apache-http\opt\clojure-contrib\clojure-contrib.jar Volume in drive C has no label. Volume Serial Number is 24E5-47D5
Directory of c:\clojure\clj-apache-http\opt\clojure-contrib
01/25/2010 11:59 AM 3,292,187 clojure-contrib.jar 1 File(s) 3,292,187 bytes 0 Dir(s) 938,508,288 bytes free
C:\clojure\clj-apache-http>dir c:\clojure\clj-apache-http\opt\clojure\clojure.jar Volume in drive C has no label. Volume Serial Number is 24E5-47D5
Directory of c:\clojure\clj-apache-http\opt\clojure
05/04/2009 07:56 AM 1,502,276 clojure.jar 1 File(s) 1,502,276 bytes 0 Dir(s) 937,955,328 bytes free
C:\clojure\clj-apache-http>ant clean jar -Dclojure.jar="c:/clojure/clj-apache-ht tp/opt/clojure/clojure.jar" -Dclojure.contrib.jar="c:/clojure/clj-apache-http/op t/clojure-contrib/clojure-contrib.jar" Buildfile: build.xml
clean: [delete] Deleting directory C:\clojure\clj-apache-http\deploy [delete] Deleting directory C:\clojure\clj-apache-http\classes [delete] Deleting: C:\clojure\clj-apache-http\clj-apache-http.jar
init: [mkdir] Created dir: C:\clojure\clj-apache-http\classes [mkdir] Created dir: C:\clojure\clj-apache-http\deploy
compile_clojure: [java] Compiling com.twinql.clojure.http to C:\clojure\clj-apache-http\clas ses [java] java.lang.NoSuchMethodError: clojure.lang.Namespace.importClass(Ljav a/lang/Class;)Ljava/lang/Class; (http.clj:1) [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava .java:194) [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:764) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218)
[java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)
[java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105)
[java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.ja
va:288) [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces sorImpl.java:39) [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet hodAccessorImpl.java:25) [java] at java.lang.reflect.Method.invoke(Method.java:597) [java] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchU tils.java:106) [java] at org.apache.tools.ant.Task.perform(Task.java:348) [java] at org.apache.tools.ant.Target.execute(Target.java:357) [java] at org.apache.tools.ant.Target.performTasks(Target.java:385) [java] at org.apache.tools.ant.Project.executeSortedTargets(Project.jav a:1337) [java] at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
[java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(De
faultExecutor.java:41) [java] at org.apache.tools.ant.Project.executeTargets(Project.java:1189 ) [java] at org.apache.tools.ant.Main.runBuild(Main.java:758) [java] at org.apache.tools.ant.Main.startAnt(Main.java:217) [java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) [java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) [java] Caused by: java.lang.NoSuchMethodError: clojure.lang.Namespace.impor
..................................................
[java] at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:2714)
[java] ... 40 more
[java] Java Result: -1
jar: [jar] Building MANIFEST-only jar: C:\clojure\clj-apache-http\clj-apache-ht tp.jar
This looks like a classpath problem.
http://clojure-log.n01se.net/date/2009-06-21.html#i28 http://osdir.com/ml/clojure/2009-09/msg00816.html
Sounds like you have a collision in your classpath. Could be this:
05/04/2009 07:56 AM 1,502,276 clojure.jar 01/25/2010 11:59 AM 3,292,187 clojure-contrib.jar
... note that your clojure.jar is 9 months old, and much older than contrib.
I suggest you make sure you can get a Clojure REPL up and running, making sure your classpath is clean. This doesn't seem like a problem with my library.
If you can't get Ant to work, try using Leiningen instead. A project.clj is in the repository.
Failing that, alter build.xml by uncommenting the .clj copy part. That way you'll get a non-AOT-compiled jar which you can use.
Good luck!
Hi, the ant build script seems to only build a manifest file for the jar -Brian