簡體   English   中英

無法從CMD運行.class文件

[英]Can't run .class files from CMD

我無法從CMD運行.class文件,而且似乎找不到解決錯誤消息的方法。 我的環境變量設置為C:\\ program files(x86)\\ java \\ jdk1.7.0_45 \\ bin,java和javac的版本均為1.7.0_45,並且我在本地目錄中運行代碼:

C:\Java\hfjavafinalsamples\chap01> javac PhraseOMatic.java

C:\Java\hfjavafinalsamples\chap01> java -classpath . PhraseOMatic
Exception in thread "main" java.lang.NoClassDefFoundError: PhraseOMatic (wrong n
ame: chap01/PhraseOMatic)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        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:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)


C:\Java\hfjavafinalsamples\chap01>

該類的完全限定名稱為chap01.PhraseOMatic ,因為其簡單名稱為PhraseOMatic ,而其包裝為chap01

java命令需要一個完全限定的名稱。 根據其類路徑和此完全限定的名稱,它將查找.class文件。 因此,如果您的類路徑為“。” 完全限定的名稱為chap01.PhraseOMatic ,它將查找./chap01/PhraseOMatic 因為您已經在chap01文件夾包中,所以這將不起作用。

因此,類路徑應為..或(更好),您應位於hfjavafinalsamples文件夾中以運行應用程序:

C:\Java\hfjavafinalsamples> java -classpath . chap01.PhraseOMatic

另外,您不應將源文件(.java)和已編譯文件(.class)放在同一文件夾樹中。 創建一個包含源樹的src文件夾,以及一個包含編譯后的類樹的classes文件。 並使用javac的-d classes選項將類編譯到classes文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM