类文件未被读取

时间:2013-04-28 21:48:51

标签: java ubuntu command-line

当我编译一个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文件非常陌生。

1 个答案:

答案 0 :(得分:2)

假设该类位于包com.prasanna.udp中并且名为UDPServer。假设包含.class文件的com/prasanna/udp目录树位于/home/Prasanna/java/classes,命令行应为:

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

如果你的类依赖于/foo/bar/somelib.jar中的jar文件,那么也应该放在类路径中:

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