對於Java而言,我絕對是新手,並且在引用另一個.java文件中聲明的類時遇到問題。我在Oracle網站上閱讀了很多關於它的知識,還有很多stackoverflow問題,但無法解決問題。以下是我採取的步驟:在我的程序中的另一個.java文件中引用類
設置類路徑。 我在UNIX上運行這個。所以我輸入 % java -classpath /users/myUserName/algs4/assignment1
。而不是改變班級路徑,它給了我一長串其他選項。
在我的每個.java文件中包含'包名稱',這些文件具有我想要引用的類定義。
我還確保我想要引用的所有文件位於同一個目錄中。 下面是我的一些代碼:
package assignment1;
public class Percolation
{
private int[][] grid;
....
//Other method definitions etc.
public Percolation(int N)
{
uf = new WeightedQuickUnionUF(N);
grid = new int[N][N];
...
//Other code
}
}
我WeightedQuickUnionUF類也被定義爲:
package assignment1;
public class WeightedQuickUnionUF {
private int[] id; // id[i] = parent of i
private int[] sz; // sz[i] = number of objects in subtree rooted at i
private int count; // number of components
//Create an empty union find data structure with N isolated sets.
public WeightedQuickUnionUF(int N) {
count = N;
id = new int[N];
sz = new int[N];
for (int i = 0; i < N; i++) {
id[i] = i;
sz[i] = 1;
}
}
}
但現在當我編譯使用javac Percolation.java。它給我的錯誤:
Percolation.java:7: cannot find symbol
symbol : class WeightedQuickUnionUF
location: class assignment1.Percolation
WeightedQuickUnionUF uf;
^
我知道這是因爲編譯器不知道什麼是WeightedQuickUnionUF類。它無法引用它。但是,我該怎麼做呢?我已經嘗試了流行的解決方案。
我沒有使用任何IDE。只需一個文本編輯器,然後在終端上編譯它。
(algs4文件夾中有一個像stdlib.jar文件及其它文件)
編輯:我錯過了 '新' 的關鍵字。我已經補充說。另外我在編譯我的WeightedQuickUnionUF類之前Percolation.java
在我的機器上測試,它編譯並運行成功。 – dcernahoschi
謝謝作品!還有一個問題,爲什麼我要從algs4目錄編譯而不是assignment1? – mvb
你應該從algs編譯:像在上面的答案 – dcernahoschi