私はJavaにまったく慣れておらず、別の.javaファイルで宣言したクラスを参照するのに問題があります。Oracle Webサイトでそれについて多くのことを読み、また多くのスタックオーバーフローの質問を読みましたが、問題を解決できませんでした。これが私が取ったステップです:
クラスパスを設定します。
私はこれを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;
}
}
}
しかし今、javacPercolation.javaを使用してコンパイルすると。それは私にエラーを与えます:
Percolation.java:7: cannot find symbol
symbol : class WeightedQuickUnionUF
location: class assignment1.Percolation
WeightedQuickUnionUF uf;
^
コンパイラがWeightedQuickUnionUFクラスが何であるかを知らないためだと思います。参照できません。しかし、どうすればそれを行うことができますか?私はすでに人気のある解決策を試しました。
IDEを使用していません。テキストエディタを使って、ターミナルでコンパイルするだけです。
(algs4フォルダーにはstdlib.jarなどのファイルがあります)
編集:「新しい」キーワードを見逃しました。私はそれを追加しました。また、Percolation.javaの前にWeightedQuickUnionUFクラスをコンパイルしています