当我编译一个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 :(得分: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