类路径(classpath)的原理及在Tomcat中的使用

每个Java开发者,从开始学习Java的那一天起,就认识了classpath。也许你只是不经意的输入了一个java HelloWorld 但这个时候,你已经无意中使用到了classpath。

说了半天,什么是classpath,有什么用呢?

概念

我们都知道,在JAVA的世界里,两个变更至关重要:pathclasspath 其中path指定了我们所使用的javacjava这些可招待程序的发行版具体路径,而classpath主要用来标识在执行java程序时加载类的位置。

Oracle官方的精确定义是这样的:

The class path is the path that the Java runtime environment searches for classes and other resource files.

即classpath是Java运行时查找class和其他资源文件的路径。

一般可以在java命令后以-classpath 或-cp的形式,来指定具体的classpath。而且,一般在系统中也不建议直接指定CLASSPATH这个环境变量,毕竟每个应用 的类路径是有区别的,在各个不同的应用中以-cp这种形式更容易使用。如果我们没有显式的指定-cp的时候,其默认值是一个点( .),代表当前路径,所以我们前面说 虽然你只是简单的输入一个java,后面跟了一个class的名称,但你已经在使用它了。

虽然说起来道理很简单,但还是会成为一些初学者,甚至一些所谓「资深」的开发者的难题。

原理

为什么看似简单的classpath,会成为开发中的一个拌脚石呢?

我们开发过程中,如果一直使用IDE进行开发,这些classpath的设置,已经由IDE代为完成,所以每次都是直接运行自己的程序,依赖的外部程序都是直接添加到所谓的 build-path里。而这些内容,在启动应用程序时,就会以classpath的形式提供。

而在命令行中运行Java程序时,这一切都需要手动进行配置,此时就会出现问题。有时是ClassNotFoundException,有时会是找不到或无法加载主类。这个时候,一定是类路径设置的问题,无法找到对应的类,或者是已经加载到的类路径中的这些class,没有包含main方法的类,或者jar文件中的MANIFAST.MF里没有Main-Class

那么,如何确定当前运行的Java应用加载了哪些资源到其类路径里,或者说它的classpath配置了一些什么内容呢? 这里有几个Java默认饮食的小工具,可以直接使用。

  1. jps

    这个命令我们在前面的文章里曾经介绍过。(你可能不知道的几个java小工具)通过jps -lv可以列出当前运行的所有Java进程,以及其详细的参数信息,这样我们的配置的classpath内容就罗列出来了。

  2. Jconsole

    这个工具我们前面文章也介绍过。通过att

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值