2013-04-28 38 views
2

當我編譯一個java文件時,它被編譯,我可以在同一個位置看到類文件。但是當我嘗試使用java命令運行它時,出現以下錯誤:不讀取類文件

Exception in thread "main" java.lang.NoClassDefFoundError: UDPServer (wrong name: com/prasanna/udp/UDPServer) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:787) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:447) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 

我該如何更正此錯誤?我應該如何讓java程序知道這個類文件的路徑? PS:我對命令行執行Java文件很新穎。

+0

這是直接從命令行還是從另一個類引用此類? – 2013-04-28 21:50:45

+0

@ChrisChambers我直接從命令行輸入「java UDPServer」。 UDPServer.java是我的java文件。 – Prasanna 2013-04-28 21:53:01

回答

2

假設班級在包com.prasanna.udp中,並且名爲UDPServer。假設com/prasanna/udp目錄樹,包含.class文件,位於/home/Prasanna/java/classes,命令行應該是:

java -cp /home/Prasanna/java/classes com.prasanna.udp.UDPServer 

如果你的等級取決於位於/foo/bar/somelib.jar一個jar文件,IY也應放置在類路徑:

java -cp /home/Prasanna/java/classes:/foo/bar/somelib.jar com.prasanna.udp.UDPServer