2011-06-17 118 views
0

我是新來的java,我試圖從書中編譯和運行一個web服務示例。 該示例使用3個文件。 我可以創建一個Eclipse項目並運行它。這樣可以很好地工作。java命令行錯誤

在命令行中我試圖

的javac TimeServer.java TimeServerImpl.java TimeServerPublisher.java

,並得到沒有錯誤

這個程序沒有在命令行中運行返回錯誤:

「找不到主類」

java TimeServerPublisher

使用-classpath選項運行將返回相同的結果。 設置類路徑也沒有幫助。即

java -classpath。 TimeServerPublisher

失敗以及

大部分的在線文檔的指定我需要的類路徑。我嘗試了他們建議的一切。

請幫忙。在此先感謝

來源:

TimeServer.java

package ch01.ts; 

import javax.jws.WebService; 
import javax.jws.WebMethod; 
import javax.jws.soap.SOAPBinding; 
import javax.jws.soap.SOAPBinding.Style; 

@WebService 
@SOAPBinding(style = Style.RPC) // more on this later 
public interface TimeServer 
{ 
    @WebMethod String getTimeAsString(); 
    @WebMethod long getTimeAsElapsed(); 
} 

TimeServerImpl.java

package ch01.ts; 

import java.util.Date; 
import javax.jws.WebService; 

@WebService(endpointInterface = "ch01.ts.TimeServer") 

public class TimeServerImpl implements TimeServer 
{ 

@Override 
public String getTimeAsString() 
{ 
    return new Date().toString(); 
} 

@Override 
public long getTimeAsElapsed() 
{ 
    return new Date().getTime(); 
} 

TimeServerPublisher.java

package ch01.ts; 

import javax.xml.ws.Endpoint; 

public class TimeServerPublisher 
{ 
    public static void main(String[ ] args) 
    { 
     Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl()); 
    } 
} 

回答

3

類不可命名TimeServerPublisher;它的名字叫做ch01.ts.TimeServerPublisher。即使您設法讓JVM找到您的類文件,它也會因爲錯誤的名稱錯誤而拒絕它,因爲您必須使用其全名來調用該類。

把所有的類文件放到一個目錄ch01/ts如果他們已經不存在,而從CH01的父目錄,鍵入

java -cp . ch01.ts.TimeServerPublisher 

我保證操作正確,這將工作。

+0

+1第一正確答案 –

+0

非常感謝! ...我瘋了試圖弄清楚:) – Greycrow

1

擺脫包裝聲明,直到你知道它們是如何工作的。有那個包,源代碼和二進制文件應當根據./ch01/ts/,你會編譯並調用爲:

javac ch01/ts/*.java 
java ch01.ts.TimeServerPublisher 
1

把你所有的類文件到文件夾ch01/ts

,然後執行命令

java ch01.ts.TimeServerPublisher 

你去那裏。如果在編譯期間你說javac -d ch01/ts *.java,它將被解決。