我试图在类App中调用类Usuario。它们在相同的包中,相同的文件夹中,但仍然,java编译器找不到类。
**我已经从github的存储库中克隆了代码(不知道这是否有任何区别)。
package code;
import java.util.*;
/**
* App
*/
public class App {
public static void main(String[] args) {
// abre o scanner
Scanner teclado = new Scanner(System.in);
//inicializa alguns usuarios e departamentos
Usuario user1 = new Usuario("123", "joao", 1);
//variaveis do usuario logado
String id = null;
String nome;
int tipo;
String cargo;
//variavel do fim do programa
boolean fim_do_programa = false;
System.out.println("Sistema de Controle de Aquisicoesn");
while(!fim_do_programa){
if(id == null){
// primeiro acesso deve requerir o login
}
// input do usuario
System.out.print("Digite o a função desejada: ");
int inputUsuario = teclado.nextInt();
switch(inputUsuario){
case 1 :// Mudar o usuario atual;
break;
case 0 : System.out.println("Fechando o programa...");fim_do_programa = true; break;
}
}
}
}
这个例子中的另一个类是"Usuario">
package code;
import java.util.*;
public class Usuario {
private String id;
private Departamento departamento;
private String nome;
private static int countUser = 0;
private int tipo;
private String cargo;
public Usuario(String codigo, String nome, int tipo) {
this.id = codigo;
this.nome = nome;
if (tipo == 1 || tipo == 2) {
this.tipo = tipo;
} else {
System.out.println("ERRO AO CRIAR USUÁRIO " + this.nome + ". Usuário não será criado.n");
this.tipo = 0;
}
countUser++;
}
public String getId() {
return id;
}
public static int getCountUser() {
return countUser;
}
public String getNome() {
return nome;
}
public int getTipo() {
return tipo;
}
public String getCargo() {
if (this.tipo == 1) {
this.cargo = "funcionário";
return this.cargo;
} else if (this.tipo == 2) {
this.cargo = "administrador";
return this.cargo;
} else {
this.cargo = null;
return this.cargo;
}
}
@Override
public String toString() {
return "Usuario [cargo=" + cargo + ", departamento=" + departamento.getDepartamento() + ", id=" + id + ", nome="
+ nome + "]";
}
}
当我尝试编译代码时,这个错误一直显示
PS C:UsersthomaOneDriveÁrea de TrabalhoTrabalhoGtrabalhoGCS-PUCRScode> javac App.java
App.java:14: error: cannot find symbol
Usuario user1 = new Usuario("123", "joao", 1);
^
symbol: class Usuario
location: class App
App.java:14: error: cannot find symbol
Usuario user1 = new Usuario("123", "joao", 1);
^
symbol: class Usuario
location: class App
2 errors
我想你只是编译错误。
-
确保
App.java
,Usuario.java
和Departamento.java
都在名为code
的目录下。这是包的名称。 -
将目录更改为
code
目录上面的目录 -
编译如下:
javac -cp . code/App.java
如果classpath/sourcepath是正确的,那么Java编译器将找到先前编译过的类和您正在编译的类(例如code/App.java
)所依赖的任何类的源文件。如果同时找到源版本和编译版本(.class
),则使用较新的版本。这意味着要重新编译较新的源文件。所以…在你的例子中…code/Usario.java
和code/Departamento.java
应该编译或重新编译。
有关更多信息,请阅读javac
和java
命令的文档。请特别注意类路径和源路径的描述,以及javac
文档中关于"搜索类型"的部分。
话虽如此,对于比这更复杂的东西,你应该毕业使用Java构建工具,如Maven, Gradle或Ant。