为什么在使用java -cp命令时java命令将类路径识别为命令?

时间:2019-01-16 08:27:14

标签: java

我正在根据http://www.ntu.edu.sg/home/ehchua/programming/java/j9c_packageclasspath.html文档研究带有包名称的Java类的编译。根据本文的内容,我创建了以下目录结构:

+MyTest  
    -TestCircle.clsss  
    -TestCircle.java  
+PackageTest  
   +classes  
     +com  
       +yyy  
         -Circle.class  
   +src  
     +com  
       +yyy  
         -Circle.java  

在以上目录结构中,“ +”代表文件夹,“-”代表Java文件。使用javac命令编译Circle.java文件时,会自动生成路径“ \ PackageTest \ classes”目录中的内容。 Circle.java使用包名称“ com。yyy”,这是Circle代码:

package com.yyy;
public class Circle{
    private double radius;
    public Circle(double radius){this.radius = radius;}
    public double getRadius(){return radius;}
    public void setRadius(double radius){this.radius = radius;}
    public String toString(){return "Circle[radius=" + radius + "]";}
}

和TestCircle代码:

import com.yyy.Circle;
public class TestCircle{
    public static void main(String[] args){
        Circle c1 = new Circle(1.23);
        System.out.println(c1);
    }
}

我已使用以下步骤成功编译了Circle.java:

>cd PackageTest\src\com\yyy
>javac -d classes src\com\yyy\Circle.java

编译后,将自动生成与包名称相对应的目录结构,该目录结构位于“ PackageTest \ classes”文件夹中。 然后,我使用以下步骤成功编译了TestCircle.java:

>cd MyTest
>javac -cp D:\PackageTest\classes TestCircle.java

但是当我使用以下命令执行时,发生了错误:

>java -cp .;D:\PackageTest\classes TestCircle

“无法将项目'D:\ PackageTest \ classes'识别为cmdlet,函数,脚本文件或可运行程序的名称。”似乎Java将类路径识别为某些命令。

任何建议将不胜感激!

PS:以上所有步骤都在Windows 10笔记本计算机上。并且我未设置CLASSPATH环境变量。

1 个答案:

答案 0 :(得分:0)

在我看来,这不是来自Java的错误,而是您的命令外壳。 尝试将引号放在-cp参数的值周围。像这样:

>java -cp ".;D:\PackageTest\classes" TestCircle

它将指示外壳程序不要尝试将其解释为命令,而应将其照原样传递给Java程序。