Ошибка Clojure/Java при подключении к REPL - java.io.FileNotFoundException: не удалось найти 'clojure/core/server__init.class

Я на Windows 10. Мне удалось скомпилировать и запустить этот jar. Но когда я пытаюсь подключиться к Socket REPL из Telnet, я получаю эту ошибку, и Telnet пишет Connection closed by foreign host.

ОШИБКА

Exception in thread "Clojure Connection mine 1" java.io.FileNotFoundException: Could not locate 'clojure/core/server__init.class or 'clojure/core/server.clj on classpath.

Не могли бы вы объяснить, что не так?:(

package com.echo;

import clojure.java.api.Clojure;
import clojure.lang.IFn;
import clojure.lang.RT;
import clojure.lang.Var;
import clojure.lang.Symbol;

public class Echo {
public static void main(String[] args) {


    try {
        IFn plus = Clojure.var("clojure.core", "+");

        System.out.println( plus.invoke(1, 2).getClass().getSimpleName() );

        IFn require = Clojure.var("clojure.core", "require");
        require.invoke(Clojure.read("clojure.core.server"));

        IFn startServer = Clojure.var("clojure.core.server","start-server");
        //Object options = Clojure.read("\"{:port 4555 :accept 'clojure.core.server/repl :name :repl2 :server-daemon false}\"");

        startServer.invoke(
            Clojure.read("{:port 4555 :accept 'clojure.core.server/repl :name mine :server-daemon false}")
        );

        System.out.println( "Started" );


    }
    catch(Exception e)
        {
            System.out.println(  e.getMessage() );
        }
    }

}

Я бегаю вот такjava -cp ".\target\echo-1.0-SNAPSHOT.jar;C:\lib\ext\clojure-1.8.0.jar" com.echo.Echo

1 ответ

Решение

Вы не должны цитировать символ, который вы читаете из строки: используйте clojure.core.server/repl вместо 'clojure.core.server/repl, Цитирование используется для предотвращения оценки; но так как вы не оцениваете, это просто приводит к дополнительной кавычке, где он не принадлежит.

Другие вопросы по тегам