我正在根据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环境变量。
答案 0 :(得分:0)
在我看来,这不是来自Java的错误,而是您的命令外壳。
尝试将引号放在-cp
参数的值周围。像这样:
>java -cp ".;D:\PackageTest\classes" TestCircle
它将指示外壳程序不要尝试将其解释为命令,而应将其照原样传递给Java程序。