java - Java - 运行多包程序
问题描述
我正在尝试为 java 客户端/服务器程序构建 MakeFile。
我有这样的路径:
- 源代码
- 服务器
- CServer.java
- 客户
- CClient.java
- 共享
- SharedClass.java
- 服务器
客户端和服务器都使用这样的共享包:
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 时遇到同样的错误
解决方案
这个不对:
javac -d bin src/**/*.java
make 总是运行/bin/sh
,并且/bin/sh
是一个 POSIX shell。POSIX 没有定义“增强的”通配符**
来搜索所有子目录。如果您将此添加到您的食谱中:
ls src/**/*.java
您将看到正在编译的文件列表。如果您需要搜索多个子目录,则必须使用find
,例如:
javac -d bin $$(find src -name \*.java)
推荐阅读
- puppeteer - Puppeteer => 如何在标签的循环中访问所有内容
- ajax - symfony 在表单中嵌入 Ajax 字段
- python - 将现有的 ModelSerializer 与 JSONResponse 一起使用
- java - 在 antlr 访问者模式中,如何从一种方法导航到另一种方法
- python - 目前正在学习从文件中读取
- android - 我的“JobIntentService”在后台运行不佳
- ruby-on-rails - 如何使用 FactoryBot 修复 rspec 测试中的“未定义方法”枚举?
- c# - 如何使用正则表达式在and和 and之间创建一个数组?
- android - getRootInActiveWindow() 在 onAccessibilityEvent 始终为空
- reactjs - 从材料 ui 处理自动完成组件的更改