我正在尝试为 Java 客户端/服务器程序构建一个 MakeFile。
我有一个这样的路径:
客户端和服务器都使用这样的共享包:
import Shared.SharedClass;
...
SharedClass mysharedobject = (SharedClass)UnicastRemoteObject.exportObject(anobject, 0);
我的makefile很简单
all: compile test
compile :
mkdir -p bin
javac -d bin src/**/*.java
test:
java -classpath bin Server.CServer &
java -classpath bin Client.CClient &
但我在运行服务器时收到 ClassNotFoundException : Shared.SharedClass。
当所有java文件都在同一个包中时它有效,但我想分割它。
有没有办法在同一文件夹中编译所有文件或在不同文件夹中正确运行类文件。
编辑: 我在尝试运行构建的 jar 时遇到了同样的错误
答案 0 :(得分:0)
这是不对的:
javac -d bin src/**/*.java
make 总是运行 /bin/sh
,而 /bin/sh
是一个 POSIX shell。 POSIX 没有定义像 **
这样的“增强型”通配符来搜索所有子目录。如果您将此添加到您的食谱中:
ls src/**/*.java
您将看到正在编译的文件列表。如果您需要搜索多个子目录,则必须使用 find
,例如:
javac -d bin $$(find src -name \*.java)