• 【待解决】关于CLASSPATH的显示问题


    CLASSPATH? 环境变量?

    环境变量CLASSPATH是操作系统JVM的搜索路径,它可以让JVM依据这些路径找到可执行文件.class文件,就相当于环境变量PATH对操作系统windows的作用一样。

    既然如此,那么我们能不能读到CLASSPATH中的那些路径?

    先看看我们是怎么读到环境变量PATH的:

    • 第一种方法

    在cmd中输入echo %PATH%

    • 第二种方法

    在计算机右键属性->高级系统设置->系统属性->环境变量里查看,PATH在用户变量和系统变量里都有显示,可以双击查看具体路径(环境变量的实现是以“系统环境变量再‘附加’用户环境变量”的形式进行的)。

    再试试能不能按照我们读取PATH的方法读取CLASSPATH

    • 第一种方法尝试

    在cmd中输入echo %CLASSPATH%

    结果原样照映出%CLASSPATH%

    • 第二种方法尝试

    在计算机右键属性->高级系统设置->系统属性->环境变量里查看

    结果:没有查找到环境变量CLASSPATH

    那到底环境变量CLASSPATH存不存在呢?

    • 资料上的那些蛛丝马迹
    1. JVM预设的CLASSPATH就是读取目前文件夹中的.class,如果自行指定CLASSPATH,则以你指定的为主

    这说明CLASSPATH里的内容是.(当前目录)?还是如果CLASSPATH内容为空,则默认CLASSPATH读取当前目录下的.class?

    1. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。(网址:环境变量path和classpath的作用是什么?)

    这说明了CLASSPATH里面没有内容,需得自己添加了以后才有么?

    1. 书上P34使用javac -verbose -sourcepath src -d classes srd/main.java时,对结果截图的描述:

    然后搜索CLASSPATH中是否有已编译的类位码。你可以发现,其实默认搜索位码的路径包括许多默认的JAR文档,像是rt.jar等。留意最后那个“.”,由于没有指定-classpath(-cp),默认会搜索目前路径。

    (而在后面指定了-cp是classes后,最后的那个“.”变为了classes)

    结合截图可以说明,图2.20中CLASSPATH显示的路径只有两类,一类是JAR文档,一类是当前目录.

    而后又在这一小节的提示里提示到

    “JVM默认的类搜索路径,也就是JAR文档的搜索路径...(这)与类加载器有关”

    而又由前面可以得知,JAR文档的搜索路径在CLASSPATH里,所以提示里的这句话是告诉我们想要查找到CLASSPATH究竟在哪可以看到内容,得先理解类加载器、JVM默认等概念么?

    (问题等待解答)

    当前猜测

    预设的CLASSPATH里存在两类路径,一类是默认的JAR文档,一类是当前目录路径。

    或许能在JVM里用某个方法把CLASSPATH里的内容显示出来。

    主要疑惑

    CLASSPATH在哪可以看到它的内容呢?(能明确指出它就是CLASSPATH,里面有内容,能对其进行修改)

    附:发现CLASSPATH的一个特点

    若用-cp指定了某个目录,则在该命令行执行过程中这个目录会暂时加到CLASSPATH里路径的最后面。如果没有指定则将当前目录(.)加到CLASSPATH路径后面(猜测是一开始CLASSPATH里就有.)

  • 相关阅读:
    iphone 拨打电话的 两种方法-备
    vi编辑器经典技巧 -备
    iOS图片压缩问题
    NSStirng、NSArray、以及枚举(Method小集合)
    宏定义 button 方法 --备
    debug 输出 以及宏定义--备
    从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解--备
    makefile编写---.c .cpp 混合编译makefile 模板
    图像处理之基础---线性卷积和循环卷积的区别
    图像处理之基础---卷积去噪
  • 原文地址:https://www.cnblogs.com/protectmonarch/p/6491946.html
Copyright © 2020-2023  润新知