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文件的命令行执行非常陌生。

4

1 回答 1

2

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

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

如果您的类依赖于位于 中的 jar 文件/foo/bar/somelib.jar,则 iy 也应该放在类路径中:

java -cp /home/Prasanna/java/classes:/foo/bar/somelib.jar com.prasanna.udp.UDPServer
于 2013-04-28T21:56:07.853 回答