rnewman / clj-apache-http

Clojure HTTP library using the Apache HttpClient.
32 stars 14 forks source link

building with ant #1

Closed brw314 closed 14 years ago

brw314 commented 14 years ago

Hi, the ant build script seems to only build a manifest file for the jar -Brian

rnewman commented 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.

brw314 commented 14 years ago

Directory of C:\clojure\clj-apache-http\opt\clojure-contrib

02/16/2010 09:59 AM

. 02/16/2010 09:59 AM .. 09/30/2009 07:55 PM 288,408 clojure-contrib.jar 1 File(s) 288,408 bytes 2 Dir(s) 695,910,400 bytes free

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

. 02/16/2010 09:58 AM .. 05/04/2009 07:56 AM 1,502,276 clojure.jar 1 File(s) 1,502,276 bytes 2 Dir(s) 695,910,400 bytes free

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

. 02/16/2010 12:13 PM .. 02/16/2010 09:24 AM 2,329 build.xml 02/16/2010 12:13 PM classes 02/16/2010 12:13 PM 361 clj-apache-http.jar

rnewman commented 14 years ago

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.

brw314 commented 14 years ago

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

rnewman commented 14 years ago

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!