首页 > 解决方案 > Java - 运行多包程序

问题描述

我正在尝试为 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 时遇到同样的错误

标签: javamakefile

解决方案


这个不对:

javac -d bin src/**/*.java

make 总是运行/bin/sh,并且/bin/sh是一个 POSIX shell。POSIX 没有定义“增强的”通配符**来搜索所有子目录。如果您将此添加到您的食谱中:

ls src/**/*.java

您将看到正在编译的文件列表。如果您需要搜索多个子目录,则必须使用find,例如:

javac -d bin $$(find src -name \*.java)

推荐阅读