也说classpath

在同事的电脑上写了个简单的helloworld.java,javac编译生成helloworld.class,再用java helloworld运行的时候提示ClassNotFoundException。(一滴汗)来看看是怎么回事

我们都知道安装jdk后,需要设置环境变量,PATH就不多说了。这里重点说说classpath。

先一起来看一看 java 程序的运行过程. 我们已经知道java是通过java虚拟机来解释运行的, 也就是通过java命令, javac 编译生成的 .class文件就是虚拟机要执行的代码, 称之为字节码(bytecode), 虚拟机通过classloader来装载这些字节码, 也就是通常意义上的类. 这里就有一个问题, classloader 从哪里知道 java 本身的类库及用户自己的类在什么地方呢?

指明classpath有三个方法,有着缺省值.(当前路径),或者要有一个用户指定的变量来表明, 这个变量就是类路径(classpath), 或者在运行的时候传参数给虚拟机.

运行命令:java -classpath d:\mylib;%classpath% com.MyClass

CLASSPATH为java加载类(class or lib)路径,一般在环境变量中声明设为:.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar (要加.表示当前路径)
此时如果你只是运行简单的helloworld程序,那么可以在.class文件的当前路径下运行命令 java com.MyClass 即可。classloader会先去机器的CLASSPATH找到目标类。

理解了原理,我来说说我遇到的问题,同事声明的CLASSPATH为%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar,少了缺省值.
而我只是运行了 java com.MyClass
显然classloader是加载不了MyClass类的,于是就有了ClassNotFoundException。那么,聪明的你一定知道解决方案了吧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值