0

I'm trying to test mire.

When I execute this code

(ns mire
  (:use [clojure.contrib server-socket duck-streams]))

I have java.io.FileNotFoundException error.

Googling to find that clojure.contrib is deprecated, I added server-socket as dependencies in the project.clj, and executed leon repl to install the jar libraries

mire> lein repl
Retrieving server-socket/server-socket/1.0.0/server-socket-1.0.0.pom from clojars
Retrieving server-socket/server-socket/1.0.0/server-socket-1.0.0.jar from clojar

Then in the emacs/cider, I tried to use this code to get the same FileNotFoundException error.

(ns mire
  (:use [server.socket server-socket duck-streams]))

java.io.FileNotFoundException: Could not locate server/socket/server_socket__init.class or     
server/socket/server_socket.clj on class path: 

In command line REPL, (use [server.socket server-socket]) gives me the same error message.

What might be wrong? I use emacs/cider/nREPL. This is the project.clj.

(defproject mire "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [server-socket "1.0.0"]])

This is the code that causes an error:

(ns mire
  (:use [clojure.contrib server-socket duck-streams]))

(def port (* 3 1111))

(defn mire-handle-client [in out]
  (binding [*in* (reader in)
            *out* (writer out)]
    (loop []
      (println (read-line))
      (recur))))

(def server (create-server port mire-handle-client))
prosseek
  • 182,215
  • 215
  • 566
  • 871

2 Answers2

2

From the code in Building an Echo Server in Clojure - Part 2, this is the working code with server.socket.

(ns mire
  (:use server.socket))
(import '[java.io BufferedReader InputStreamReader OutputStreamWriter])

(def port (* 3 1111))

(defn mire-handle-client [in out]
  (binding [*in* (BufferedReader. (InputStreamReader. in))
            *out* (OutputStreamWriter. out)]
        (loop []
            (println (read-line))
            (recur))))

(def server (create-server port mire-handle-client))
prosseek
  • 182,215
  • 215
  • 566
  • 871
1

The namespaces are usually dot-separated. server.socket in this library is.

Try this:

(ns mire (:use [server.socket]))
Konrad Garus
  • 53,145
  • 43
  • 157
  • 230