在我的程序中的另一个.java文件中引用类

在我的程序中的另一个.java文件中引用类,java,Java,我对Java完全陌生,在引用另一个.Java文件中声明的类时遇到困难。我在甲骨文网站上读了很多关于它的文章,还有很多关于stackoverflow的问题,但都没能解决这个问题。以下是我采取的步骤: 设置类路径。 我在UNIX上运行这个。所以我打了进去 %java-classpath/users/myUserName/algs4/assignment1。它没有改变类路径,而是给了我一长串其他选项 在我的每个.java文件中包含“包名”,这些文件都有我想要引用的类定义 我还确保要引用的所有文件都位于

我对Java完全陌生,在引用另一个.Java文件中声明的类时遇到困难。我在甲骨文网站上读了很多关于它的文章,还有很多关于stackoverflow的问题,但都没能解决这个问题。以下是我采取的步骤:

设置类路径。 我在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;
        }
     }
}
我知道这是因为编译器不知道什么是类WeightedQuickUnionUF。它不能引用它。那我该怎么做呢?我已经尝试过流行的解决方案

我没有使用任何IDE。只需要一个文本编辑器,然后在终端上编译它

(algs4文件夹包含stdlib.jar等文件)


编辑:我错过了“新”关键字。我已经补充了这一点。另外,我正在Percolation之前编译我的WeightedQuickUnionUF类。java

java命令不是设置类路径,而是尝试运行java类。这就是为什么选择列表很长

您可以在编译时指定类路径:run
javac-classpath。algs4目录中的assignment1/Percolation.java
。注意点,它表示当前目录

不需要按顺序编译文件


要运行您的程序:
java-cp。assignment1.Percolation
来自algs4目录。

您需要首先编译依赖项,即在您的例子中是
WeightedQuickUnionUF

如果需要匿名对象,请将其与
new
关键字一起声明:

uf = new WeightedQuickUnionUF(N);
或者像另一个答案中提到的那样使用它

由于该答案已被删除(我再也看不到了),另一种方法是使用命名对象:

WeightedQuickUnionUF myObj; 


您必须在

order of the flow of the Object Graph.
这意味着在编译加权的QuickUnionUF之前,不能编译渗流类

因此,首先编译加权的QuickUnionuf,然后再进行过滤

我想你甚至在初始化WeightedQuickUnionUF(N)时漏掉了
new
关键字


我首先编译了WeightedQuickUnionUF类。我还添加了新的关键字,但消息是一样的。java:6:找不到符号symbol:class WeightedQuickUnionUFI首先编译了WeightedQuickUnionUF类。(没有错误)。我还添加了新的关键字,但同样的问题。在我的机器上测试,它编译和运行成功。谢谢!还有一个问题,为什么我要从algs4目录编译,而不是从赋值1编译?您应该从algs编译:就像上面的答案一样
myObj = new WeightedQuickUnionUF(N);
uf = myObj;
order of the flow of the Object Graph.
uf = new WeightedQuickUnionUF(N);