Command line arguments that are not strings need to be converted prior to use by your main function.
Look at the code for the port number and do the same for the service. --jon On Aug 28, 2012, at 2:42, larry google groups <lawrencecloj...@gmail.com> wrote: So, this started when I read Keith Swallow's article on a simple web server: http://keithcelt.com/a-simple-web-server-in-clojure I took his code and ran "lein new" to create a new project and I copy and pasted his code to core.clj and made some minor adjustments, adding gen-class and main so I could run this from the command line. My main function looked like this: (defn -main [& args] (let [port (Integer/parseInt (first args))] (println "Server is starting") (run-server port echo))) Which called his function: (defn run-server [port service] (let [server-socket (create-socket port)] (while (not (. server-socket isClosed)) (listen-and-respond server-socket service)))) I compiled that and ran "lein uberjar" and then ran it from the command line and it worked great. Then, to make it slightly more flexible, I wanted to hand in the name of the service from the command line. So I made a minor change: (defn run-server [port what-to-do] (let [server-socket (ServerSocket. "localhost" port)] (while (not (. server-socket isClosed)) (listen-and-respond server-socket what-to-do)))) (defn -main [& args] (let [port (Integer/parseInt (first args)) service (second args)] (println "Server is starting") (println "port: " port) (println "service: " service) (run-server port service))) I compiled this and ran it. And now this line: (defn run-server [port what-to-do] Gets this error: Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number at who_is_logged_in.core$run_server.invoke(core.clj:27) I'm calling it from the command line with: java -jar who-is-logged-in-1.0.0-SNAPSHOT-standalone.jar 3456 who-is-here-now I also tried putting the service name in quotes: java -jar who-is-logged-in-1.0.0-SNAPSHOT-standalone.jar 3456 "who-is-here-now" Can anyone tell me what is wrong? Why does Clojure think I'm trying to cast "who-is-here-now" to a number? -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en