java -classpath 会覆盖掉系统环境变量的classpath???

本文介绍如何正确设置 Java 的 classpath 环境变量,确保第三方库能够被 Java 类加载器正确识别。通过具体示例展示了 classpath 的配置方法,并解决了因 classpath 设置不当导致的主类未找到的问题。
1.系统环境变量里设置了classpath
.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
2.java代码 Test.java

import java.io.IOException;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
public class Test {
public static void main(String[] args) throws IOException {
Date date = new Date();
int hh = date.getHours();
int mm = date.getMinutes();
int ss = date.getSeconds();
String ssHHmm = StringUtils.leftPad(String.valueOf(ss), 2, "0")
+StringUtils.leftPad(String.valueOf(hh), 2, "0")
+StringUtils.leftPad(String.valueOf(mm), 2, "0");
int result = Integer.valueOf(ssHHmm);
System.out.println("=========>"+result);
}
}

代码里使用了commons-lang-2.3.jar,和Test.java放在同一个目录。
3.javac -classpath .\commons-lang-2.3.jar Test.java能正常编译。
4.java -classpath .\commons-lang-2.3.jar Test
报[color=red]找不到或无法加载主类 Test[/color]
5.修改为java -classpath .;.\commons-lang-2.3.jar Test则可以正常运行
### Java中`-classpath`命令行参数的使用方法和示例 在Java中,`-classpath`(或简写为`-cp`)是一个非常重要的命令行选项,用于指定JVM在运行时查找类文件的路径。通过该参数,可以灵活地控制类加载器从哪些目录、JAR文件或ZIP归档中加载类[^2]。 #### 基本语法 ```bash java -classpath <路径> <主类名> ``` 其中 `<路径>` 是一个或多个用分隔符(Windows上是分号`;`,Linux/macOS上是冒号`:`)分隔的目录、JAR文件或ZIP文件,`<主类名>` 是包含 `main` 方法的类的全限定名。 若未显式指定 `-classpath`,则默认使用环境变量 `CLASSPATH` 的值;如果 `CLASSPATH` 也未设置,则默认当前目录(`.`)作为类路径。 #### 示例说明 ##### 示例1:指定单个目录作为类路径 假设类文件位于 `C:\myclasses` 目录下: ```bash java -classpath C:\myclasses com.example.Main ``` JVM 将在 `C:\myclasses` 中查找 `com/example/Main.class` 文件并执行。 ##### 示例2:指定多个路径 若类文件分布在多个目录中,例如 `C:\myclasses` 和 `C:\lib\utils.jar`: ```bash java -classpath C:\myclasses;C:\lib\utils.jar com.example.Main ``` JVM 将依次从这两个位置加载所需的类文件。 ##### 示例3:使用相对路径 如果类文件位于项目中的 `build/classes` 目录,并且依赖库在 `lib/utils.jar`: ```bash java -classpath build/classes:lib/utils.jar com.example.Main ``` 适用于Linux/macOS系统。 ##### 示例4:与`-jar`一起使用(注意限制) 当使用 `java -jar` 执行 JAR 包时,不能再通过 `-classpath` 指定额外的类路径,因为 `-jar` 会忽略所有类路径设置,仅使用 JAR 清单文件中定义的类路径。若需扩展类路径,应修改清单文件中的 `Class-Path` 属性。 #### 注意事项 - 使用 `-classpath` 时,路径中的空格需要用引号包裹或使用转义字符。 - 在跨平台开发中应注意路径分隔符的差异。 - 若使用 IDE(如 IntelliJ IDEA 或 Eclipse),通常由 IDE 自动管理类路径,但在命令行执行时需手动配置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值