0

我搜索了很多,找到了很多答案,这表明这是一个“流行”问题......但是,我无法解决它。

我可以成功编译一个类。为了做到这一点,我有这个 bash 脚本:

#!/usr/bin/env bash

if [[ $CLASSPATH ]] ; then
    extra_classpath=""
else
    extra_classpath=":$CLASSPATH"
fi

while true ; do
    case "$1" in
        -cp | -classpath)
            extra_classpath=":$2"
            shift 2 ;;
        --)
            shift
            break ;;
        *)
            break ;;
    esac
done

java -cp /usr/share/java/clojure.jar:./classes/:./src/"$extra_classpath" \
clojure.main "$@"

这基本上是对 Debian 上默认安装的闭包的翻版,只是将本地目录添加到类路径中。

当我以这种方式启动 REPL 时,我可以这样做:

user=> (compile 'tld.assignment.sum_calculator)

类文件在 ./classes/tld.assignment.sum_calculator 中生成

但我无法加载编译的内容。我尝试使用完全限定的类名作为参数运行此脚本 - 我找不到文件。如果我像这样运行java:

$ java -cp /usr/share/java/clojure.jar:./classes/ \
tld.assignment.sum_calculator 1 2

此外,我立即从 REPL 尝试(load "tld.assignment.sum_calculator")使用文件扩展名和不使用文件扩展名,用斜杠替换点和前导点并且全部无效 -(load)总是“成功”,返回 nil 并在那里结束:S

我找不到类定义。我不知道出了什么问题。:(

编辑:

对不起,路径的一个成功排列成功了。我不知道为什么,但是如果我将 ./classes/ 目录与类路径上的 clojure.jar 交换,那么它可以工作...... Java......

4

1 回答 1

0

这个真的不用回答了。它看起来像是路径扩展(?)或Java加载器读取路径的方式中的一些错误......无论如何,它现在已经解决了。

于 2012-05-09T17:35:40.520 回答