2014-03-28 97 views
2

我在cmd在贏7使用javac找不到輸出.class文件?

C:\Users\User\Downloads\java_tut>javac HelloWorld.java 

C:\Users\User\Downloads\java_tut>dir *.class 

Directory of C:\Users\User\Downloads\java_tut 

03/28/2014 05:42 PM    429 YourClassName.class 

C:\Users\User\Downloads\java_tut> 

javac helloworld.java我搜索的HelloWorld.class以下目錄: 的Java,JRE,JDK,java_tut,JRE/bin中,JDK/bin,然後我的整個硬盤。

我確實需要手動將/ jdk/bin目錄添加到我的路徑。我想知道這是否重要?

+0

嘗試運行程序是否運行,如果是的類文件必須在那裏? –

+0

我運行'javac HelloWorld.java',並沒有輸出文件(因此,這個問題)。 –

+1

什麼是HelloWorld的包聲明? – Seelenvirtuose

回答

2

如果HelloWorld.java編譯沒有任何錯誤,那麼文件HelloWorld.class肯定應該在java_tut目錄中。

EDIT(根據您的意見和編輯):

檢查您的Java源文件HelloWorld.java如下所示:

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("Hellow, World!"); 
    } 
} 

類必須具有相同的名稱作爲Java源文件或者您得到以下編譯器錯誤消息:

[515]% javac HelloWorld.java 
HelloWorld.java:1: error: class YourClassName is public, should be declared in a file named YourClassName.java 
public class YourClassName { 
^
1 error 
1

雖然我詢問有關包聲明,我可以告訴你正確的做法:

讓我們假設你有與源的Java類:

package my.test; 
public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("Hello World."); 
    } 
} 

假設你的項目的根目錄是

C:\Projects\java_tut

你必須把源文件HelloWorld.java進入目錄

C:\Projects\java_tut\my\test

然後你編譯並啓動這個l

C:\Projects\java_tut> javac my/test/HelloWorld.java 

C:\Projects\java_tut> dir my\test 
[...] 
28.03.2014 09:35 <DIR>   . 
28.03.2014 09:35 <DIR>   .. 
28.03.2014 09:35    434 HelloWorld.class 
28.03.2014 09:34    134 HelloWorld.java 
[...] 

C:\Projects\java_tut> java my.test.HelloWorld 
Hello World. 

說明:雖然在java_tut目錄使用下面的命令是ittle程序。如果使用包的(和你總是應該使用包你的類),你一定不要「坐」在那個包,但始終運行來自包(文件夾)外部的命令。

+0

如果這確實是問題,那麼'javac'也應該失敗? –

+0

是的,你是對的。我也承擔,他有一個編譯錯誤。我想表達的是正確的方法,初學者應該遵循。通過這個程序,他應該得到一個工作程序(和預期的輸出),而不管他以前有什麼問題。 – Seelenvirtuose

0

YourClassName.class在這種情況下是正確的文件。類名不是基於.java文件名生成的。它是基於.java文件中的類名生成的。在我的.java文件中,我命名類YourClassName而不是HelloWorld

+0

在這種情況下,你應該已經看到了下面的編譯器錯誤信息:「[515]%的javac HelloWorld.java HelloWorld.java:1:錯誤:類YourClassName是公共的,應在名爲YourClassName.java文件中聲明」 –

+0

@Peter所以,我想知道爲什麼我沒有看到這個錯誤。 d-8 –

0

另一個可能的原因是空的.java源文件。

這導致javac默默無聞地產生任何東西。

我經歷了一個Hello Word程序和Macintosh的編輯器,它的效果 - 這將節省與Cmd的-S,但不與按Ctrl-S保存。經過20年的Java編程,我學到了這一點。