2010-08-11 85 views
0

我的Java非常生疏,我在这里有点头疼。Java JAR问题

这里是我的server.java:

import java.io.IOException; 

import net.tootallnate.websocket.WebSocket; 
import net.tootallnate.websocket.WebSocketServer; 

public class server extends WebSocketServer 
{ 
     public server(int port) 
     { 
       super(port, Draft.AUTO); 
     } 

     public void onClientOpen(WebSocket conn) 
     { 
       System.out.println("onopen"); 
       /*try 
       { 
         this.sendToAll(conn+" entered the room!"); 
       } 
       catch(IOException ex) 
       { 
         ex.printStackTrace(); 
       }*/ 
     } 

     public void onClientClose(WebSocket conn) 
     { 
       System.out.println("onclose"); 
     } 

     public void onClientMessage(WebSocket conn,String message) 
     { 
       System.out.println("onmessage"+message); 
     } 

     public static void main(String[] args) 
     { 
       int port = 8000; 
       try 
       { 
         port=Integer.parseInt(args[0]); 
       } 
       catch(Exception ex) 
       { 
       } 
       server s = new server(port); 
       s.start(); 
       System.out.println("ChatServer started on port: "+s.getPort()); 
     } 
} 

我需要包括一个jar文件:./Java-WebSocket/dist/WebSocket.jar(可从http://github.com/TooTallNate/Java-WebSocket/

它编译OK:

prompt> javac -classpath ./Java-WebSocket/dist/WebSocket.jar server.java

然而,当我去跑:

prompt> java -classpath ./Java-WebSocket/dist/WebSocket.jar server

Exception in thread "main" java.lang.NoClassDefFoundError: server 
Caused by: java.lang.ClassNotFoundException: server 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: server. Program will exit. 

我希望有人可以提供帮助。

由于提前,

+0

是否与.java文件位于同一目录下生成.class文件? – MikeTheReader 2010-08-11 20:18:10

+0

只是FYI。按照惯例,所有Java类都以大写字符开头。所以你的公共类服务器应该是公共类Server {。 – CoolBeans 2010-08-11 20:19:19

回答

2
java -classpath .:./Java-WebSocket/dist/WebSocket.jar server 
       ^^ 

或Windows:

java -classpath .;./Java-WebSocket/dist/WebSocket.jar server 
       ^^ 

类路径默认为当前目录。你需要指向你的课程以及图书馆。

+0

传说,它现在工作。 – Eamorr 2010-08-11 20:24:32

0

是不是把server放在一个包里?如果是,请指定完整的类名称。

例如prompt> java -classpath ./Java-WebSocket/dist/WebSocket.jar app.core.server

虽然我也会大写类名。

0

您是否尝试过使用完整的类名(your.package.server)?