2011-06-17 92 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,它将被解决。