2013-12-15 35 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」包(完整包名稱中的第一個包)的目錄結束。