如果我没有';t根据java包命名约定,命令";无法找到.class;爪哇;,正确的?
“java Hello3”(带有Hello3.class a java类)给我的信息是否正常:如果我没有';t根据java包命名约定,命令";无法找到.class;爪哇;,正确的?,java,classpath,package,naming,Java,Classpath,Package,Naming,“java Hello3”(带有Hello3.class a java类)给我的信息是否正常: Exception in thread "main" java.lang.NoClassDefFoundError: Hello3 (wrong name: pp/Hello3) 类是Hello3.java的编译二进制文件。这个java文件被声明在某个包“pp”下,但它不被放在“pp”目录中 package pp; public class Hello3 { public static vo
Exception in thread "main" java.lang.NoClassDefFoundError: Hello3 (wrong name: pp/Hello3)
类是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中。IMHO,我认为这可以作为一种攻击 它应该是
java-cp pp.Hello3
,Hello3.java和Hello3.class文件必须按照包声明的指示位于pp
目录下。它应该是java-cp pp.Hello3
,Hello3.java和Hello3.class文件必须按照包的指示位于pp
目录下声明。您确实需要在名为pp
的目录中拥有Hello3.class。包含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
您确实需要在名为
pp
的目录中拥有Hello3.class。包含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类必须位于与包名一致的目录中。这看起来是正确的行为。类将其包存储在内部,如果它位于不正确的目录中,则不会工作。它看起来是正确的行为。类将其包存储在内部,如果它位于不正确的目录中,则不会工作。