java命令行错误

时间:2011-06-17 23:54:23

标签: java command-line

我是java新手,我正在尝试从一本书中编译和运行一个Web服务示例。 该示例使用3个文件。 我可以创建一个Eclipse项目并运行它。它的工作方式很好。

从命令行我试过

javac TimeServer.java TimeServerImpl.java TimeServerPublisher.java

没有错误

此程序无法在命令行上运行返回错误:

“无法找到主要课程”

java TimeServerPublisher

使用-classpath选项运行会返回相同的结果。 设置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 个答案:

答案 0 :(得分:3)

您的课程未命名为TimeServerPublisher;它的名字是ch01.ts.TimeServerPublisher。即使您设法让JVM找到您的类文件,它也会以错误名称错误拒绝它,因为您必须使用其全名调用该类。

将所有类文件放入目录ch01/ts(如果它们不存在),并从ch01的父目录中键入

java -cp . ch01.ts.TimeServerPublisher

我保证这样做是正确的。

答案 1 :(得分:1)

删除包语句,直到你知道它们是如何工作的。有了这个包,你的源代码和二进制文件应该在./ch01/ts/下,你可以编译和调用:

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

答案 2 :(得分:1)

将所有课程文件移至文件夹ch01/ts

然后执行命令

java ch01.ts.TimeServerPublisher

你去吧。如果您在编译期间说javac -d ch01/ts *.java,它将被解决。