`

也说classpath

    博客分类:
  • java
阅读更多
在同事的电脑上写了个简单的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。那么,聪明的你一定知道解决方案了吧
分享到:
评论

相关推荐

    浅析Spring配置中的classpath:与classpath*:的区别

    5. 在多个 classpath 中存在同名资源,都需要加载时,那么用 classpath: 只会加载第一个,这种情况下也需要用 classpath*: 前缀。 总结 本文对 Spring 配置中的 classpath: 与 classpath*: 的区别进行了详细的介绍...

    关于classpath

    总结,理解并正确配置classpath是Java开发中的基础,也是确保程序能正常运行的关键。合理地管理classpath可以有效避免类找不到或重复加载等问题,提高开发效率。通过掌握上述知识,你将能够更自如地应对classpath...

    自学如何使用框架的工具classpath

    不同的框架可能有不同的依赖管理方式,例如Maven和Gradle,它们可以自动管理`classpath`,但你也需要知道如何手动配置。以下是一些关键知识点: 1. **默认`classpath`**:如果没有显式设置`classpath`,JVM会默认...

    Classpath Variable 解决办法

    可以单独指定每个库,也可以将所有库放在一个目录下并指定该目录。 3. **冲突的类**:如果同一个包中有两个版本的类,可能会导致冲突。确认Classpath中只有一个版本的库,或者使用`-verbose:class`选项查看加载类的...

    java classpath 理解

    ### Java Classpath 理解 #### 一、在命令行查看 Classpath 在 Java 开发环境中,了解如何查看当前环境下的 classpath 非常重要。...正确理解和使用 classpath 对于 Java 开发者来说是非常关键的技能之一。

    .classpath

    .classpath

    path与classpath区别

    简单的说就是,如果设置系统变量和用户变量,都叫做设置环境变量,设置系统变量时,该系统的所有帐号的用户都可以使用,但是设置用户变量时,其他的帐号登陆时就不一定可以使用。 实例 以下是设置Java环境变量的...

    Path和classpath配置详解

    总结来说,Path和Classpath是Java开发者必须掌握的基本概念。理解它们的原理和配置方法,不仅可以帮助你编写出可移植的代码,还能提高问题排查的效率。通过阅读文档《path与classpath配置.doc》,你将能更深入地了解...

    classpath备份

    classpath备份

    java中path和classpath的设置

    ### Java中的Path与Classpath设置详解 ...总之,正确地配置`path`和`classpath`对于Java开发者来说至关重要,这不仅能够确保开发环境的稳定性和一致性,还能提高开发效率。希望上述内容对你有所帮助!

    IKVM.GNU.Classpath

    总的来说,IKVM.GNU.Classpath是一个强大的工具,它允许.NET开发者利用丰富的Java生态系统,特别是对于那些没有.NET对应实现的库,如PDF处理。同时,了解如何正确使用dll文件,以及针对不同架构选择合适的版本,是...

    java的classpath的终结者(不会让你失望)

    ### Java的Classpath详解及其重要性 在Java编程的学习与实践中,环境配置是入门的关键步骤之一,其中最为棘手的问题之一便是如何正确设置`...对于初学者来说,理解`classpath`的工作原理是掌握Java编程的基础之一。

    classpath 和path

    ### classpath与path详解 #### 一、概念介绍 在深入了解`classpath`和`path`之前,我们需要先明确这两个环境变量的基本概念。 ##### path `path`环境变量主要用于指定操作系统可以搜索到可执行文件(例如`.exe`...

    GNU Classpath

    对于Java开发者来说,理解GNU Classpath和Jamvm的组合非常重要,因为这不仅有助于他们在资源受限的环境中部署Java应用,还可以深入学习Java类库的内部工作原理。通过参与这样的开源项目,开发者可以提升自己的编程...

    Java环境配置与设置JAVA_HOME_CLASSPATH_PATH的目的

    Java 环境配置与设置 JAVA_HOME, CLASSPATH, PATH 的目的 Java 环境配置是 Java 开发的基础,我们需要正确地配置 JAVA_HOME, CLASSPATH, PATH 等环境变量,以便正确地编译和运行 Java 程序。在本节中,我们将详细地...

    java classpath 配置详细讲解

    ### Java Classpath 配置详解 #### 一、前言 对于初学Java的朋友而言,配置Java环境常常是一项艰巨的任务,尤其是如何正确设置`classpath`。这篇文章将通过一系列实际操作来详细阐述`classpath`的配置过程,帮助...

    一个自动生成CLASSPATH字符串的脚本

    对于JAR文件,它们的完整路径也会被加入。 3. **处理依赖**:如果项目依赖于外部库,脚本可能还会检查库的路径,将这些库的JAR文件添加到CLASSPATH中。 4. **避免重复**:在构建字符串时,脚本会确保不包含重复的...

    Java命令行classpath的设置

    总结来说,Java命令行classpath的设置涉及到Java程序的运行环境配置,理解并正确设置类路径对于有效运行和调试Java应用程序至关重要。对于JavaDBTest.java这样的测试代码,确保包含所有必要的库和驱动是成功运行的...

Global site tag (gtag.js) - Google Analytics