我得到了两个Java文件(Main类(Practica1)和另一个类(Matriz2x2))。两者都在同一个文件夹中。
主类实例提供了给我的类,这是弹出“找不到符号”错误的地方。
Matriz2x2类进行编译。

我不会提供每个类的详细信息(方法等),因此,简单地说,Matriz2x2类如下所示:

package mx.unam.ciencias.icc;

public class Matriz2x2 {

    private double a;
    private double b;
    private double c;
    private double d;

    public Matriz2x2(double a, double b,
                     double c, double d) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
    }
}


这是主要的类:

package mx.unam.ciencias.icc;

import java.util.Random;

public class Practica1 {

public static void main(String[] args) {
    Random r = new Random();

    Matriz2x2 m = new Matriz2x2(r.nextDouble() * 100,
                                r.nextDouble() * 100,
                                r.nextDouble() * 100,
                                r.nextDouble() * 100);
    }
}


这是发脾气:

jose@jose-ThinkPad-T420:~/practica1/src/mx/unam/ciencias/icc$ javac Practica1.java
Practica1.java:13: cannot find symbol
symbol  : class Matriz2x2
location: class mx.unam.ciencias.icc.Practica1
        Matriz2x2 m = new Matriz2x2(r.nextDouble() * 100,
        ^
Practica1.java:13: cannot find symbol
symbol  : class Matriz2x2
location: class mx.unam.ciencias.icc.Practica1
        Matriz2x2 m = new Matriz2x2(r.nextDouble() * 100,
                          ^
Practica1.java:17: cannot find symbol
symbol  : class Matriz2x2
location: class mx.unam.ciencias.icc.Practica1
        Matriz2x2 n = new Matriz2x2(r.nextDouble() * 100,
        ^
Practica1.java:17: cannot find symbol
symbol  : class Matriz2x2
location: class mx.unam.ciencias.icc.Practica1
        Matriz2x2 n = new Matriz2x2(r.nextDouble() * 100,
                          ^
Practica1.java:37: cannot find symbol
symbol  : class Matriz2x2
location: class mx.unam.ciencias.icc.Practica1
        Matriz2x2 i = m.inversa();
        ^
Practica1.java:43: cannot find symbol
symbol  : class Matriz2x2
location: class mx.unam.ciencias.icc.Practica1
            Matriz2x2 id = m.multiplica(i);
            ^
6 errors


如您所见,关于我未包含在Matriz2x2示例中的方法还有其他错误,但是我没有发现这些错误,因为它们都是关于同一问题的,它只是找不到Matriz2x2类。
这可能很简单,但是我只是看不到他们可能在代码中写的任何错误(除了老师写的那样),所以我看不到为什么主类没有编译,一切似乎都是正确的。

最佳答案

您需要从源层次结构的根调用javac

这样做:

 cd ~/practica1/src
 javac mx/unam/ciencias/icc/Practica1.java


这样,编译器知道在哪里查找Matriz2x2.java文件。

Java要求目录结构反映软件包名称。因此,由于这些类位于mx.unam.ciencias.icc包中,因此编译器希望它们位于当前目录的mx/unam/ciencias/icc子目录中。但是,通过将当前目录作为子目录,您会混淆编译器。

更好的解决方案是编写构建脚本(Ant)或使用IDE。

08-05 04:29