使用wsgen时找不到类/错误的名称

时间:2013-12-15 20:42:33

标签: java web-services wsgen

我遇到了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 [选项]

我错过了什么?

1 个答案:

答案 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文件。

来自Java documentation

  

每个类路径应以文件名或目录结尾,具体取决于您将类路径设置为:

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