“java Hello3”(Hello3.class 是一个 java 类)给我正常吗:
Exception in thread "main" java.lang.NoClassDefFoundError: Hello3 (wrong name: pp/Hello3)
Hello3.class是Hello3.java的编译二进制文件。这个java文件被声明在某个包“pp”下,但它没有放在“pp”目录中。
package pp;
public class Hello3 {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
我的命令 java Hello3.java 是在与 Hello3.java 相同的目录中执行的。更重要的是,即使是命令“java -cp . Hello3”也不起作用!也许是我的问题??
既然我从以下答案中得到了您的确认,我可能会在这里得出一个天真的结论:制作一个永远不起作用的 .class 太容易了。只需在包 XXX 下声明您的 .java,但不要将其放在目录 XXX 中。恕我直言,我认为这可以用作攻击!
最佳答案
您确实需要将 Hello3.class 放在名为 pp
的目录中。包含 pp
的目录应该位于类路径中。假设这个目录名为classes
:
...
|_ classes
|_ pp
|_ Hello3.class
启动 Java 程序的命令应该是
java -cp /the/path/to/classes pp.Hello3
或者,在 Windows 上
java -cp c:\the\path\to\classes pp.Hello3
关于java - 如果我不遵守 java 包命名约定,则命令 "java"无法找到 .class,对吧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042483/