gpt4 book ai didi

Java 执行不适用于 -classpath

转载 作者:行者123 更新时间:2023-11-30 08:06:43 26 4
gpt4 key购买 nike

测试.java

package test;

import shape.twod.*;
import shape.threed.*;
import shape.*;

public class Test {

/**
* Creates a new instance of <code>Test</code>.
*/
int o;
public Test() {

}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
ObjActions obj[] = new ObjActions[4];
obj[0] = new Line(1,2,3,4);
obj[1] = new Circle(1,2,3);
obj[2] = new Line3D(1,2,3,4,5,6);
obj[3] = new Sphere(1,2,3,4);
for(ObjActions x: obj)
x.draw();
ObjActions.Actions2D o =(Circle)obj[1];
//Actions2D o =(Circle)obj[1];
System.out.println("Area of circle "+o.area());
ObjActions.Actions3D op = (Sphere)obj[3];
System.out.println("Volume of sphere "+op.volume());
}
}

它的位置是D:\Program\Javalearningprograms,所用包的位置是D:\Program\Javalearningprograms\PackageCheck

首先我编译它

javac -classpath .\PackageCheck -d .\Test.java

编译成功,在.\test中创建了Test.class,然后我就用了这个

java -classpath .\PackageCheck test.Test

得到错误:无法找到或加载主类test.Test

所以我尝试了完整路径:

java -classpath D:\Program\Javalearningprograms\PackageCheck\test.Test

java -classpath D:\Program\Javalearningprograms\PackageCheck test.Test

仍然有错误:无法找到或加载主类test.Test

然后为了检查 .class 文件是否有任何错误,我将文件夹 .\test 移动到 D:\Program\Javalearningprograms\PackageCheck 并尝试了

java test.Test 来自 D:\Program\Javalearningprograms\PackageCheck 程序运行成功

然后我将 CLASSPATH 环境变量设置为 D:\Program\Javalearningprograms\PackageCheck 并清理 .class 文件然后尝试

javac -classpath .\PackageCheck -d .\Test.java 它在 .\test 文件夹和我使用的文件夹中创建了 Test.class

java test.Test 程序运行成功,我试过了

java -classpath .\PackageCheck test.Test

java -classpath .\PackageCheck\test.Test

java -classpath D:\Program\Javalearningprograms\PackageCheck test.Test

java -classpath D:\Program\Javalearningprograms\PackageCheck\test.Test

得到错误:无法找到或加载主类test.Test

我不知道为什么 -classpath 不能使用 java 命令,我做错了什么?

    Directory: D:\Program\Javalearningprograms\PackageCheck


Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 09-Dec-15 1:35 PM baseobj
d----- 09-Dec-15 1:35 PM shape
-a---- 09-Dec-15 1:33 PM 559 Circle.java
-a---- 09-Dec-15 1:33 PM 566 Line.java
-a---- 09-Dec-15 1:33 PM 627 Line3D.java
-a---- 09-Dec-15 1:32 PM 384 ObjActions.java
-a---- 08-Dec-15 9:58 PM 340 Point.java
-a---- 08-Dec-15 9:58 PM 302 Point3D.java
-a---- 08-Dec-15 10:05 PM 343 PointTest.java
-a---- 09-Dec-15 1:33 PM 547 Sphere.java

最佳答案

因为 Test.class 不在您的类路径的目录中。

javac -classpath .\PackageCheck -d .\ Test.java

创建文件 test\Test.class

但是使用您定义的类路径 -classpath .\PackageCheck 它无法在目录 test\ 中找到。

将命令更改为

java -classpath .\PackageCheck;. test.Test

这将在 PackageCheck\ 和当前目录下找到类。

编辑 根据修改后的问题,PackageCheck\ 似乎只包含源文件。所以所有生成的class文件都会存放在当前目录下

shape\twod\*.class
shape\threed\*.class
shape\*.class
test\*.class

要么使用 java -cp 运行代码。 test.Test 或将编译后的类存储到专用目录(之前必须创建)javac -cp .\PackageCheck -d bin Test.java。然后您可以使用 java -cp bin test.Test 运行您的代码。 (请记住删除已经创建的类文件,以确保它们不是从错误的目录中获取的。)

关于Java 执行不适用于 -classpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178598/

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