Java 执行无法使用 -classpath

标签 java

测试.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\仅包含源文件。因此所有生成的类文件将存储在当前目录下

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/

相关文章:

java - 然而Eclipse错误: Incompatible JVM,,无法更新JVM

java - 如何检测具有多个显示器的系统中的屏幕位置?

java - 如何拆分此函数以降低认知复杂度?

java - 从通知启动 Activity 并在 BackPressed 上传递数据

java - JNI获取ConcurrentHashMap

java - Extjs Grid 无法加载大数据

java - 如何在 Java 中的文件系统之间移动(大)文件?

Java Swing : implementing my Comboboxmodel for JComboBox

java - OpenCV Android Studio Java IP摄像机未连接

java - 如何最有效地共享 log4j 库