【Java】classpath的理解及其使用方式

博客介绍了Java中classpath的使用要点。指定-classpath时,每个路径尾部须加分割,可避免执行出错;要考虑各路径引用先后顺序,Java解释器按其在变量中出现顺序查找类;对于.jar或.zip文件,classpath以其名称结尾,默认路径为当前路径。还通过示例说明特殊情况的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详细篇:https://blog.youkuaiyun.com/wk1134314305/article/details/77940147


** 凡事指定了-classpath,每个路径尾部都必须加上;分割,这样可避免执行中出现一些想不到的情况。** (大概是因为:如果不加;分割,java默认直接在你写的路径加上.;导致出错,然后就会报:找不到当前路径的类)。

要考虑classpath 各个路径引用的先后顺序。Java解释器将按照它们在classpath变量中出现的顺序来查找目录中的类。


  • 对于包含.class文件的.jar或.zip文件,classpath以.zip或.jar文件的名称结尾
java -classpath xx.jar; cn.com.agree.Test 

注意: -classpath 默认路径为 .,代表当前路径。

特殊情况:

假设 cn.com.agree.thread 下有三个类,ThreadDemo.java,MyThread.java,MyThreadRunnable.java 。ThreadDemo导入了其他两个类。
(其实就是说,他们三个是同一个包名,且存在某一个类引用了其他同包名的类)

package cn.com.agree.thread;
public class ThreadDemo {  
	public static void main(String[] args) throws InterruptedException {	   
		/**
	    * 三个线程,为单线程,无法共享count变量,故共售出15张票
	    */
	   MyThread myThread1 = new MyThread("窗口1");
	   MyThread myThread2 = new MyThread("窗口2");
	   MyThread myThread3 = new MyThread("窗口3");
	   myThread1.start();
	   myThread2.start();
	   myThread3.start();	   
	   System.out.println("========");
	   Thread.sleep(2000);
	   MyThreadRunnable myThreadRunnable1 = new MyThreadRunnable();
	   Thread thread1 = new Thread(myThreadRunnable1,"窗口4");
	   Thread thread2 = new Thread(myThreadRunnable1,"窗口5");
	   Thread thread3 = new Thread(myThreadRunnable1,"窗口6");
	   thread1.start();
	   thread2.start();
	   thread3.start();	   
	   System.out.println("========");
	   Thread.sleep(2000);
	   /**
	    * 同样不会共享
	    */
	   MyThreadRunnable myThreadRunnable4 = new MyThreadRunnable();
	   MyThreadRunnable myThreadRunnable5 = new MyThreadRunnable();
	   MyThreadRunnable myThreadRunnable6 = new MyThreadRunnable();
	   Thread thread4 = new Thread(myThreadRunnable4,"窗口7");
	   Thread thread5 = new Thread(myThreadRunnable5,"窗口8");
	   Thread thread6 = new Thread(myThreadRunnable6,"窗口9");
	   thread4.start();
	   thread5.start();
	   thread6.start();	   
    }
}

现在将ThreadDemo.class放在 c:\users\cjf\Music\cn.com.agree.thread路径下

在这里插入图片描述
其他两个类放在另外路径下:(对,有点操蛋)
在这里插入图片描述
此时想运行ThreadDemo,如果只指定其他两个类的路径,不加;。它会找不到主类。
在这里插入图片描述

** 凡事指定了-classpath,建议加上.,且每个路径尾部都加上;分割,可避免执行中出现一些想不到的情况。**
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值