简体   繁体   中英

clojure.java.io ClassNotFoundException

I am trying to run the following program on my Mac:

(ns clojure.examples.hello
   (:gen-class))
(require ‘clojure.java.io’)
(defn Example []
   (.exists (file "Example.txt")))
(Example)

I do this wih the following command:

clojure Exists.clj

But this gives me the following error:

Syntax error (ClassNotFoundException) compiling at (Exists.clj:5:1).
‘clojure.java.io’

How can I go about including the clojure.java.io class?

Here is how you would normally write this in a source code file:

(ns tst.demo.core
  (:require [clojure.java.io :as io]) ; proper form, but not used anywhere
  (:import [java.io File]))

(println (spit "demo.txt" "stuff happens"))
(println (slurp "demo.txt"))
(println (.exists (java.io.File. "./demo.txt"))) ; will work w/o `:import` above
(println (.exists (File. "./demo.txt"))) ; requires `:import` declaration above

with results:

(spit "demo.txt" "stuff happens")        => nil
(slurp "demo.txt")                       => "stuff happens"
(.exists (java.io.File. "./demo.txt"))   => true
(.exists (File. "./demo.txt"))           => true

Note that using the :require keyword in a ns form requires different syntax and quoting than using the (require...) function call.

If you are typing these lines into a REPL, you may do something like:

demo.core=> (ns demo.core)
nil
demo.core=> (require '[clojure.java.io :as io])   ; function-call version
nil
demo.core=> (spit "demo.txt" "stuff happens")
nil
demo.core=> (println (slurp "demo.txt"))
stuff happens
nil

You may find this template project helpful in getting started. Also be sure to check out the list of documentation sources, esp. the Clojure CheatSheet!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM