开发者

java command line errors

开发者 https://www.devze.com 2023-03-13 15:58 出处:网络
I\'m new to java and I\'m trying to compile and run a web service example from a book. The example uses 3 files.

I'm new to java and I'm trying to compile and run a web service example from a book. The example uses 3 files. I can create an Eclipse Project and Run it. It works fine this way.

From the command line I tried

javac TimeServer.java TimeServerImpl.java TimeServerPublisher.java

And got no errors

This program does not run on the command line returns error:

"Could not find the main class"

java TimeServerPublisher

r开发者_运维问答unning using the -classpath option returns the same result. Set classpath does not help either. ie

java -classpath . TimeServerPublisher

fails as well

Most of the online docs specify I need a classpath. I tried everything they suggested.

Please Help. Thanks in advance

Source:

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());
    }
}


Your class is not named TimeServerPublisher; it's named ch01.ts.TimeServerPublisher. Even if you manage to get the JVM to find your class file, it will reject it with a wrong-name error, as you must invoke the class with its full name.

Put all the class files into a directory ch01/ts if they're not there already, and from ch01's parent directory, type

java -cp . ch01.ts.TimeServerPublisher

I guarantee that done correctly this will work.


get rid of the package statements until you know how they work. to have that package, your sources and binaries should be under ./ch01/ts/ and you would compile and invoke as:

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


Move all your class files to folder ch01/ts.

and then execute command

java ch01.ts.TimeServerPublisher

There you go. If you say javac -d ch01/ts *.java during compilation, it will be solved.

0

精彩评论

暂无评论...
验证码 换一张
取 消