我尝试在编译.java文件后运行java命令,.java文件包含多个类,但只有一个公共类,而公共类中只有一个主要方法。当所有.class文件都位于同一位置时,它找不到主类。在netbeans上,它运行完美,在CMD上显示错误。同样抱歉,如果我在写作中犯了任何错误,英语不是我的主要语言,而是西班牙语。这就是为什么类和变量名称使用西班牙语的原因。
我已经检查过该类只有一种主要方法,所有类都位于同一位置,并且.java文件中只有一个公共类
这是代码,您只能看到一个公共类,而main是公共类。
package dfutreras_arqapp_aa19_2b;
public class Dfutreras_ArqApp_AA19_2B {
public static void main(String[] args) {
// TODO code application logic here
Constructora constructora = new Constructora();
ConstruyeCasas constructor_SencillaCasa = new ConstruyeCasasSencillas();
ConstruyeCasas constructor_FamiliarCasa = new ConstruyeCasasFamiliares();
constructora.setConstruyeCasas(constructor_SencillaCasa);
constructora.construirCasa();
Casa casa = constructora.getCasa();
System.out.println("Se ha construido una casa " + casa.getTipo());
System.out.println("Con " + casa.getHabitaciones()+ " habitaciones");
System.out.println("Con " + casa.getBanos()+ " baños");
System.out.println("Con " + casa.getVentanas()+ " ventanas");
System.out.println();
constructora.setConstruyeCasas(constructor_FamiliarCasa);
constructora.construirCasa();
Casa casa2 = constructora.getCasa();
System.out.println("Se ha construido una casa " + casa2.getTipo());
System.out.println("Con " + casa2.getHabitaciones()+ " habitaciones");
System.out.println("Con " + casa2.getBanos()+ " baños");
System.out.println("Con " + casa2.getVentanas()+ " ventanas");
}
}
//成功的产品
`class Casa{`
private Integer habitaciones;
private Integer banos;
private Integer ventanas;
private String tipo;
public void setHabitaciones(Integer habitaciones){
this.habitaciones = habitaciones;
}
public void setBanos(Integer banos){
this.banos = banos;
}
public void setVentanas(Integer ventanas){
this.ventanas = ventanas;
}
public void setTipo(String tipo){
this.tipo = tipo;
}
public Integer getHabitaciones(){
return habitaciones;
}
public Integer getBanos(){
return banos;
}
public Integer getVentanas(){
return ventanas;
}
public String getTipo(){
return tipo;
}
}
// Clase抽象生成器
abstract class ConstruyeCasas{
protected Casa casa;`
public Casa getCasa(){
return casa;
}
public void crearNuevaCasa(){
casa = new Casa();
}
public abstract void constuirHabitaciones();
public abstract void construirBanos();
public abstract void construirVentanas();
public abstract void asignarTipo();
}
//解释为casas sencillas
class ConstruyeCasasSencillas extends ConstruyeCasas{
@Override
public void constuirHabitaciones(){
casa.setHabitaciones(1);
}
@Override
public void construirBanos(){
casa.setBanos(2);
}
@Override
public void construirVentanas(){
casa.setVentanas(5);
}
@Override
public void asignarTipo(){
casa.setTipo("Sencilla");
}
}
`//Clase construye casas familiares
`
class ConstruyeCasasFamiliares extends ConstruyeCasas{
@Override
public void constuirHabitaciones(){
casa.setHabitaciones(3);
}
@Override
public void construirBanos(){
casa.setBanos(4);
}
@Override
public void construirVentanas(){
casa.setVentanas(8);
}
@Override
public void asignarTipo(){
casa.setTipo("Familiar");
}
}
//场景总监a
class Constructora{
private ConstruyeCasas construyeCasas;
public void setConstruyeCasas(ConstruyeCasas consCasas){
construyeCasas = consCasas;
}
public Casa getCasa(){
return construyeCasas.getCasa();
}
public void construirCasa(){
construyeCasas.crearNuevaCasa();
construyeCasas.constuirHabitaciones();
construyeCasas.construirBanos();
construyeCasas.construirVentanas();
construyeCasas.asignarTipo();
}
}
.java和.class文件的目录是这样的:
C:\Users\hecto_000\Documents\NetBeansProjects\Dfutreras_ArqApp_AA19_2B\src\dfutreras_arqapp_aa19_2b
我希望当我在运行javac Dfutreras_ArqApp_AA19_2B。之后在CMD中运行java Dfutreras_ArqApp_AA19_2B.java将执行该程序并且不会出现错误:Error Could not find or load the main class Dfutreras_ArqApp_AA19_2B.
答案 0 :(得分:1)
您的课程被声明为:
package dfutreras_arqapp_aa19_2b;
public class Dfutreras_ArqApp_AA19_2B {
这意味着它位于软件包dfutreras_arqapp_aa19_2b
中,因此:
-运行时必须提供完整的软件包名称,并且
-当前目录必须位于根(顶级)目录中。
将它们放在一起意味着要运行该类,请转到src目录:
C:\Users\hecto_000\Documents\NetBeansProjects\Dfutreras_ArqApp_AA19_2B\src
并运行命令:
java dfutreras_arqapp_aa19_2b.Dfutreras_ArqApp_AA19_2B
要从当前目录运行该类,请从.java文件中删除行package dfutreras_arqapp_aa19_2b
,这表示该类位于“默认”包中。
巧合的是,值得一提的是Java的命名标准是类名应为“ CamelCase”(因此不能使用下划线)
答案 1 :(得分:0)
在您所有的类中都包含(软件包dfutreras_arqapp_aa19_2b;),然后尝试一下。