2016-07-15 25 views
-1

我的第一個Java程序如何編譯和運行兩個不同的java程序,其中一個在不同的目錄中的另一個實例?

import java.io.*; 
class pgm10a 
{ 
    public static void main(String args[]) 
    { 
     pgm10b b=new pgm10b(); 
     b.display(); 
    } 
    void display() 
    { 
     System.out.println("A class"); 
    } 
} 

它被保存在C:\ NNK \ PACK1 第二個程序是

import java.io.*; 
class pgm10b 
{ 
    void pgm10b() 
    { 
     pgm10a a=new pgm10a(); 
     a.display(); 
    } 
    void display() 
    { 
     System.out.println("Class B"); 
    } 
} 

它是在C:\ NNK \ PACK2 我想運行pgm10a但它一直顯示pgm10b沒有發現異常。我已經設置了類路徑併爲兩者編譯,兩者都編譯成功。但是當我嘗試運行它時,它顯示pgm10b未找到。

enter image description here

+0

@JonnyHenly我不明白......包括在導入類中。你能舉一個例子嗎? –

+0

如果他們在同一個軟件包中,他們不應該*在*不同的目錄中。 – EJP

+0

@EJP它們不在同一個包中。 –

回答

3

看一看的syntax for the java command

的java [選項] 類名 [ARGS]在類名後

一切皆有不是一種選擇到java命令 - 它只是按照字符串數組原樣傳遞給程序的main方法。

您可以通過這個改變你的最後一個命令解決您的問題:

java pgm10a -cp C:\NNK\pack2 

這樣:

java -cp .;C:\NNK\pack2 pgm10a 

類路徑是目錄的順序,在Windows上運行時,;分離(其他操作系統上的:),它告訴java命令在哪裏查找編譯類。如果您只指定C:\NNK\pack2,則Java將只能看到該目錄中的類。期間(.)引用當前目錄,因此上面的類路徑指向當前目錄(其中包含pgm10a)和pack2目錄(其中包含pgm10b)。

+0

它刪除了類未找到的錯誤。但是由於'無法找到或加載主類pgm10a',給出了一個新的錯誤。現在有什麼問題?我知道它超出了我的問題範圍。 –

+1

你需要在你的類路徑中有兩個目錄。我相應地更新了我的答案。 – VGR

+0

@VGR感謝它的工作!但你能解釋你做了什麼,如何添加。解決了這個問題。 –

相關問題