gpt4 book ai didi

Java 再次 "Cannot find symbol"

转载 作者:行者123 更新时间:2023-12-01 17:21:40 26 4
gpt4 key购买 nike

我得到了两个java文件(主类(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 要求目录结构反射(reflect)包名称。因此,由于这些类位于 mx.unam.ciencias.icc 包中,编译器希望它们位于当前目录的 mx/unam/ciencias/icc 子目录中。但是通过将当前目录设置为子目录,您会使编译器感到困惑。

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

关于Java 再次 "Cannot find symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com