我是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());
}
}
答案 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
,它将被解决。