执行Java -cp

时间:2014-04-16 12:21:09

标签: java compilation classpath execution

我对-cp有疑问,何时应该使用它。这是我的情景: 我有两个.java,第一个:

包autos.tests.paquete;

公共类MainAutos {

public static void main(String args[]) {

int x = Integer.parseInt(args[0]);

Respotar objeto1 = new Respotar (x);


int mostrar = objeto1.repostar();


System.out.println(mostrar);

} }

第二个:

包autos.tests.paquete;

公共类Respotar {

int gasolina;

public Respotar (int gasolina) {

    this.gasolina=gasolina;

}


public int repostar (){

    int gasolina = this.gasolina +20;



    return  gasolina;
}

}

好吧,我在根目录,那里,我有那个目录:autos / tests / paquete 同时使用.java。

所以我编译: javac autos / tests / paquete / * .java

从根目录执行: java autos.tests.paquete.MainAutos 10 它有效,现在我怀疑了:

1)我用java -cp执行。 autos.tests.paquete.Main autos 10,行为是一样的。

2)我将Respotar.class从auto / tests / paquete移动到另一个目录,我用它编译 java autos.tests.paquete.MainAutos 10并且它可以工作。

3)我将MainAutos.class从auto / tests / paquete移动到另一个目录,我用它编译 java autos.tests.paquete.MainAutos 10并且它说:错误:无法找到或加载主类autos.tests.paquete.MainAutos

4)我用java -cp编译。 autos.tests.paquete.MainAutos(我正在编译的当前目录上有.class,所以我认为我必须使用-cp。)并且它说的相同: 错误:无法找到或加载主类autos.tests.paquete.MainAutos

提前谢谢,希望有人可以赐教,问候

1 个答案:

答案 0 :(得分:0)

java -cp用于将任何库(如jar文件)设置为当前的类路径。

对于您展示的示例,您可以通过以下简单方式执行此操作

从您的根目录使用以下命令编译您的java文件

javac -d . *.java

这将创建那些适当的包并将类文件放在它们下面

然后使用来自相同根位置的命令运行代码

java autos.tests.paquete.MainAutos