2012-11-27 35 views
2

所以我想運行一個名爲WordFrequencyCounter的類,它嵌套在文件夾中:C:\ Users \ Mike \ Documents \ Computer Science \ AI \ Machine Learning \ 175 \ Assignment 2 \ src \ ir \ assignments \ two \ b如何從包含2個不同包中的源代碼的命令行運行java代碼?

但是當我去到該文件夾​​,然後運行:

的javac WordFrequencyCounter.java

,因爲它說,它無法找到 進口ir.assignments.two.a.Frequency它給了我一個錯誤; 具體地說,它說包ir.assignments.two.a不存在,但這個文件位於:

C:\用戶\麥克\文檔\計算機科學\ AI \機器學習\ 175 \作業2 \ SRC \ IR \作業\ 2 \一

我也試圖從文件夾中調用javac的WordFrequencyCounter.java:C:\用戶\麥克\文檔\計算機科學\ AI \機器學習\ 175 \作業2

但那也行不通。所以我想要的是能夠編譯並運行WordFrequencyCounter,然後從命令行爲它提供一個位於 C:\ Users \ Mike \ Documents \ Computer Science \ AI \ Machine Learning \ 175 \ Assignment 2中的輸入文件。我可以從IDE做到這一點,但無法通過命令行來實現。

我認爲這是一個類路徑相關的問題,但我找不到任何有用的東西,對於我的特定示例,我沒有嘗試過任何工作。 enter image description here

這裏的主要方法WordFrequencyCounter:

public static void main(String[] args) throws FileNotFoundException { 
    File file = new File(args[0]); 

    List<String> words = Utilities.tokenizeFile(file); 

    List<Frequency> frequencies = computeWordFrequencies(words); 
    Utilities.printFrequencies(frequencies); 
} 
+0

包是ir.assignments.two.b中的WordFrequencyCounter? – Sai

回答

2

去src文件夾,然後運行

javac -d . ir/assignments/2/b/MainClass.java

,並使用java ir.assignments.2.b.MainClass運行它。

+0

偉大的編譯工作。但我仍然堅持運行代碼,因爲我在src的父文件夾(Project文件夾)中有一個輸入文件。我添加了一個文件結構的圖片以供澄清。另外,我想知道如何通過設置CLASSPATH環境變量來做到這一點? –

+0

如何閱讀java代碼中的輸入文件? – Subin

+0

如果它是一個ClassPathResource,使用java -cp ..;來運行你的代碼。 ir.addignmanets.2.b.MainClass。這會將父庫和當前庫添加到jvm類路徑中。 – Subin