请问classpath路径前面的“.”具体有什么意思? 书上和大多数资料注释说的是“当前目录”,意思是否是寻找.class文件的路径之一就是class所在的当前目录呢?把“.;”加在其他目录前面的意思是先从“当前目录”找,然后再找“;”后面的目录?
             但是我不加的话在cmd命令下进入当前目录(class文件所在目录)也可以java成功。??这是为什么恩?            请搞懂的朋友帮忙说下这个不加的问题之所在,和为什么一定要加呢?            怎么样才能体现出他的重要性? (*^__^*) 嘻嘻……  谢谢咯
            自己搞的不是很懂,请高人解答下

解决方案 »

  1.   

    不加"."也可以成功,估计是后来Java升级后默认附加到classpath后面了吧
      

  2.   

    如果你没有设置CLASSPATH,虚拟机会有个默认的设置的
    但是如果你设置了,虚拟机就会用该环境变量,如果你不设置当前目录的话,会报java.lang.NoClassDefFoundError
      

  3.   

    而且我发现要实现任何dos目录下都能直接java这个已经编译好的程序只要在环境变量中加入路径即可
       但是,我就算没加点,只要dos在当前目录下就没问题的。
      

  4.   

    你在CMD中echo %CLASSPATH%看下
      

  5.   

    alias CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      

  6.   

    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\Administrator>echo %classpath%
    E:\Java\jdk1.6.0_07\lib;C:\Documents and Settings\Administrator>
      

  7.   

    关于classpath的建议:
    1: 不要设置在系统环境变量中
    2: java -classpath "" 选项的作用是在指定路径寻找class文件,路径可以是文件夹名称也可以是jar包名称;
    3: 如果在class文件所在目录执行java 包含main函数类名,且没有使用jar包或其他位置的class,则无需添加classpath选项;
    4: 如果在在class文件所在目录执行java 包含main函数类名 使用-classpath选项,请注意加上[.],这个在dos或unix命令行中表示当前目录;或者加上所在目录完整路径(没有必要)
      

  8.   

    比如你的class文件编译后在 E:\MyJava 有一个 HelloWorld.class  (源文件不一定在这里 参见javac -d选项)你在C根目录下执行HelloWorld 如下
     C:\>java -classpath "E:\MyJava" HelloWorld  有没有[.]无所谓如果在E:\MyJava 下执行HelloWorld 如下
    E:\MyJava>java HelloWorld 
    无需设置如果你的HelloWorld用了jdbc驱动,比如mysql的(mysql.jdbc.jar),那么执行时必须是
    E:\MyJava>java -classpath "E:\MyJava\mysql.jdbc.jar;." HelloWorld 
    必须指定jar文件,同时必须有[.],没有的话就找不到HelloWorld.class自己了(虽然在目录下执行)
      

  9.   

    不应该吧~~~
    如果你在 DOC 下执行 java 命令,如果指定了 classpath 参数,那么就使用这个指定的 classpath 。如果没有指定 classpath 参数。那么 JVM 就会使用环境变量中的 CLASSPATH 了。且如果环境变量中没有 Classpath 或为空,那么 JVM 才会到当前目录找 class 文件。环境变量中的 Classpath 中 . 表式当前路径。
    不知道你是如何测试的。需要注意的是,你每次在外部(不是在 DOS 中更改 classpth)了环境变量后,需要重新打开一个 DOC 。那些在修改前打开的 DOC 中所记录的 classpath 仍旧是原来的值。
      

  10.   

    顺便问的小小的问题
      大家在cmd里面用的classpath就是在java命令之后?跟-classpath然后写出要执行的class文件,是吗?目的在于告诉路径? 对吗?
         
     弱弱一下,大家说的这个-cp 命令,是classpath的缩写还是另外的一个命令? 
      

  11.   

    意思就是说,还是用来在调用了外部的程序后能够找到自己? 
    那么如果把所有自己写的类都放在一个新文件夹下,然后给环境变量classpath中加了这个路径就是说,调用完别人的后根据环境变量的指引找到这个类,是不是就不用写"."了?  嘿嘿 这样写路径的话是不是很罗嗦呢?那个"."是别人想出来的简单法子?
      

  12.   

    大家在cmd里面用的classpath就是在java命令之后?跟-classpath然后写出要执行的class文件,是吗?目的在于告诉路径? 对吗?
      

  13.   

    这个是在cmd命令行下才能用到的吧?? 
      

  14.   


    这个“.”和".."在dos和unix下面都是表示目录自身和上级目录
    cd .
    cd ..如果把所有自己写的类都放在一个新文件夹下,然后给环境变量classpath中加了这个路径就是说,调用完别人的后根据环境变量的指引找到这个类,是不是就不用写"."了?  如果在环境变量classpath中加了这个路径,就不用写"."了
      

  15.   


    这个是java.exe所需要的重要参数
      

  16.   


    恩,我现在不加也能跑,但就是简单的HelloWorld,还没测试调用其他类呢,那我就加上吧。
        对了,这个加前面和加后面有区别吗? 就是说(.;路径)和 ( 路径.; )还有(路径;.)这仨有区别么?
      

  17.   

    关于classpath的建议:
    1: 不要设置在系统环境变量中
    2: java -classpath "" 选项的作用是在指定路径寻找class文件,路径可以是文件夹名称也可以是jar包名称;
      

  18.   


    环境变量无法覆盖你所需要的全部jar和文件夹,如果不用IDE,手工启动程序,且所需的包和class文件夹比较多的话,写一个bat文件即可写入环境变量则在测试的时候总是会出些小问题。  要理解classpath的根本作用,就不会觉得太多神奇或者迷惑了 -cp <class search path of directories and zip/jar files>
     -classpath <class search path of directories and zip/jar files>
                   A ; separated list of directories, JAR archives,
                   and ZIP archives to search for class files.