The call I coded works if you only pass a string with no spaces.

However, if the string has spaces there is no result.
If you break the string into String[] then clojure cannot match the
appropriate exec(String[]) method in Runtime. I do not know how
to convince clojure to call this method.

alux wrote:
The call to a static method is special, try

(.exec (Runtime/getRuntime) "ls")

Regards, alux

TimDaly schrieb:
(defn cmdresult [cmdstr]
  (let [args (into [] (seq (.split cmdstr " ")))]
  (BufferedReader.
    (InputStreamReader.
      (. (. (. Runtime (getRuntime)) (exec args))
(getInputStream))))))

(defn readLine [cmdresult] (. cmdresult (readLine)))

(def a (cmdresult "ls *.o"))

This fails claiming:
No matching method found: exec for class java.lang.Runtime

If I replace the Runtime line with:
   (. (. (. Runtime (getRuntime)) (exec "ls")) (getInputStream))))))
it works and gives me the result of the "ls" system call.

If I replace the Runtime line with
  (. (. (. Runtime (getRuntime)) (exec "ls *.o"))
(getInputStream))))))
it fails even though it has a string argument.

Suggestions?

Tim Daly


--
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

To unsubscribe from this group, send email to clojure+unsubscribegooglegroups.com or 
reply to this email with the words "REMOVE ME" as the subject.

Reply via email to