[英]If I don't respect the java package naming convention, the .class cannot be found by the command “java”, right?
“ 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中。 恕我直言,我認為這可以用作攻擊!
您確實確實需要在名為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 -cp <path_to_classpath_libs> pp.Hello3
,並且Hello3.java和Hello3.class文件必須在軟件包聲明所指示的pp
目錄下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.