简体   繁体   中英

java command line errors

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

running 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM