java - java - 为什么java命令在使用java -cp命令时将类路径识别为命令?
问题描述
我正在根据文档研究带有包名的 Java 类的编译:http: //www.ntu.edu.sg/home/ehchua/programming/java/j9c_packageclasspath.html。根据本文的内容,我创建了如下目录结构:
+MyTest
-TestCircle.clsss
-TestCircle.java
+PackageTest
+classes
+com
+yyy
-Circle.class
+src
+com
+yyy
-Circle.java
在上面的目录结构中,“+”代表文件夹,“-”代表java文件。路径“\PackageTest\classes”目录下的内容是使用javac命令编译Circle.java文件时自动生成的。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 环境变量。
解决方案
在我看来,这不是来自 java 而是来自你的命令 shell 的错误。尝试在参数的值周围加上引号-cp
。像这样:
>java -cp ".;D:\PackageTest\classes" TestCircle
它将指示 shell 不要尝试将其解释为命令,而只是将其按原样传递给 java 程序。
推荐阅读
- python - 为什么我的代码没有保存移位字段 df.shift()?
- python - 循环创建集群的问题
- dataweave - 这个骡子功能到底是什么
- r - 在 R 中扩展时间序列
- web-scraping - Puffing Billy 和多个 Capybara 会议
- php - 扩展一个带有函数的php文件
- java - 在java中分别打印重复值和非重复值
- python - 从flask_ldap3_login的current_user.get_id()中提取uid的正确方法?
- xamarin.forms - 使用 DataTemplate 时,ListView 仅显示列表中的最后一项
- angular - 如何在 Firebase 或 AngularFire 查询中执行字符串操作?