2013-12-15 29 views
0

我遇到wsgen的问题,虽然我看到一些可行的解决方案,但这些解决方案似乎都不适用于我。我相信这个问题与源代码和二进制文件的结构有关。使用wsgen时未找到类别/错误的名称

WSTest项目设置与下列文件夹:

bin 
└───com 
    └───example 
     └───ws 
src 
└───com 
    └───example 
     └───ws 

的主类是Test驻留在包com.example.ws

我从主项目文件夹WSTest使用以下命令运行wsgen

wsgen -cp ./bin/com/example/ws -d ./src/com/example/ws -s ./src/com/example/ws Test 

这导致:

异常在线程 “主要” 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 [选项]

我错过了什么?

回答

1

你试过类似的东西吗?

wsgen -cp ./bin -d ./src -s ./src com.example.ws.Test 

classpath文件夹是wsgen寻找类文件。该类中的包被解析为文件夹路径,所以com.example.ws.Test应该是bin类路径文件夹中的com/example/ws/Test.class这样的文件。

Java documentation

每类路径应该以文件名或目录结束取决于你所设置的类路径:

  • 对于包含.jar或.zip文件.class文件中,类路径以.zip或.jar文件的名称结尾。
  • 对于未命名包中的.class文件,类路径以包含.class文件的目录结束。
  • 对于命名包中的.class文件,类路径以包含“root”包(完整包名称中的第一个包)的目录结束。