当我编译 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 文件的命令行执行非常陌生。
最佳答案
假设该类位于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 文件,则 iy 也应放置在类路径中:
java -cp /home/Prasanna/java/classes:/foo/bar/somelib.jar com.prasanna.udp.UDPServer
关于java - 类文件未被读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268305/