我遇到了wsgen
的问题,虽然我看到了一些有效的解决方案,但这些解决方案似乎都不适用于我。我认为问题与源和二进制文件的结构有关。
我的WSTest
项目设置了以下文件夹:
bin
└───com
└───example
└───ws
src
└───com
└───example
└───ws
主要类Test
位于包com.example.ws
。
我使用以下命令从主项目文件夹wsgen
运行WSTest
:
wsgen -cp ./bin/com/example/ws -d ./src/com/example/ws -s ./src/com/example/ws Test
这导致:
线程“main”中的异常java.lang.NoClassDefFoundError(错误的名称:com / example / ws / Test)
这是有道理的,因为该类是包的一部分。所以我将命令更改为以下内容:
wsgen -cp ./bin/com/example/ws -d ./src/com/example/ws -s ./src/com/example/ws com.example.ws.Test
但现在我从wsgen
工具中找不到课程:
未找到类:“com.example.ws.Test”
用法:WSGEN [选项]
我错过了什么?
答案 0 :(得分:2)
你尝试过这样的事吗?
wsgen -cp ./bin -d ./src -s ./src com.example.ws.Test
classpath文件夹是wsgen
查找类文件。该类中的包已解析为文件夹路径,因此com.example.ws.Test
应该是com/example/ws/Test.class
类路径文件夹中的bin
文件。
每个类路径应以文件名或目录结尾,具体取决于您将类路径设置为:
- 对于包含.class文件的.jar或.zip文件,类路径以.zip或.jar文件的名称结尾。
- 对于未命名包中的.class文件,类路径以包含.class文件的目录结束。
- 对于命名包中的.class文件,类路径以包含“root”包的目录(完整包名中的第一个包)结束。