错误:编译具有多个类的.Java文件后,使用Java命令时找不到或加载主类

时间:2019-07-11 01:31:35

标签: java cmd

我尝试在编译.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.

2 个答案:

答案 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;),然后尝试一下。