问点关于CLASSPATH 路径的问题。

时间:2022-08-12 18:45:49
我计算机环境变量设置情况:
java_home  C:\Java\jdk1.6.0_06
PATH       %java_home%\bin;%java_home%\jre\bin
CLASSPATH  .;%java_home%\lib;%java_home%\lib\tools.jar

E:\Codes\Java\PackageTest.java                    包含引入包语句 import com.horstmann.corejava.*;
E:\Codes\Java\com\horstmann\corejava\Package.java 包含加入包语句 package com.horstmann.corejava;

PackageTest.java 是包含main 方法的公共类,
到目录E:\Codes\Java\ 下编译 javac PackTest.java 成功,java Package  运行正常。
说明对包运行正常的。

1.但是不明白为什么会正常,CLASSPATH 里面没有指明包含E:\Codes\Java\ 的源路径,java 根据什么打包一个文件和引入一个文件的?
2.classpath 中的点(.)表示当前路径是啥意思,是不是只某个文件的当前路径?比如上面的 PackageTest.java 他的当前路径就是E:\Codes\Java\  ,而Package.java 的当前路径就是 E:\Codes\Java\com\horstmann\corejava ??????

初学,请知道的朋友指教,感谢!!!!

17 个解决方案

#1


该回复于2015-05-26 11:34:09被管理员删除

#2


(.)表示当前的 路径 就是,比如说你现在 即如 D:\work\  这个文件夹下面  你 这个文件夹下面  新建一个 Hello.java 的文件 。 你就直接可以 在这个文件夹下面 进行编辑就可以哦!!

#3


楼上和我说的是一个意思哈~

#4


虽然, classpath 没有指明,但是你在 cmd 中  就是 进入的这个 文件加 或者  你编译的时候 要用  javac D:\work\Hello.java   才能哦!! 所谓的当前就是 指D:\work 文件夹下了哦!
   

#5


明白当前意思了~~~
主要问题是另一个~~

#6


 有人给分吗?

#7


有人知道吗?唉~~我结贴率那么高的哦~~~~~

#8


引用 2 楼 joynet007 的回复:
(.)表示当前的 路径 就是,比如说你现在 即如 D:\work\  这个文件夹下面  你 这个文件夹下面  新建一个 Hello.java 的文件 。 你就直接可以 在这个文件夹下面 进行编辑就可以哦!!

#9


JDK ,环境配置 

最后配置JDK的环境变量:在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”。 

新建系统变量JAVA_HOME:D:\Java\jdk1.5.0_06; (建议:最好不要放中文目录下,或者带有空格的目录,哪怕系统默认的,也最好别放在那目录下.例如:Program Files 这个目录)

新建系统变量CLASSPATH:.;%JAVA_HOME%\lib;(注意:点号表示当前目录,不能省略) 

在系统变量Path的值的前面加入以下内容:%JAVA_HOME%\bin;(注意:这里的分号不能省略) 

到这里,JDK安装,设置环境变量完毕。 

注意:如果以后要安装诸如Eclipse、Borland JBuilder、JCreator、IntelliJ IDEA等集成开发环境(IDE,Integrated Development Environment),应该在IDE中编译运行一个简单的HelloWorld程序,以保证IDE可以识别出JDK的位置。 


祝楼主好运 !!!


#10


    1.CLASSPATH有当前路径,因此你在E:\Codes\java下运行java刚好将其设置为CLASSPATH,如果你在其他路径下你的java就不能运行成功。
    2.当前路径是程序的一个变量,你在哪个目录下运行程序(如javac),程序的当前路径就是这个路径并且在程序中可以使用这个当前路径,javac时默认当前路径在CLASSPATH中

#11


引用 10 楼 cqmarlin 的回复:
    1.CLASSPATH有当前路径,因此你在E:\Codes\java下运行java刚好将其设置为CLASSPATH,如果你在其他路径下你的java就不能运行成功。 
    2.当前路径是程序的一个变量,你在哪个目录下运行程序(如javac),程序的当前路径就是这个路径并且在程序中可以使用这个当前路径,javac时默认当前路径在CLASSPATH中


我又有个例子如下:
我在E:\Codes\java\com\horstmann\corejava\Test.java 这个是一个public 权限类,此文件中第一句是package com.horstmann.corejava;
在E:\Codes\java\com\mycompany\MyTest.java 此文件中包含语句import com.horstmann.corejava.*;

这时我在目录E:\Codes\java\com\mycompany 下面编译(javac MyTest.java),运行(java MyTest),运行正常。

按照上面2 的说法,此时我的当前路径应该是E:\Codes\java\com\mycompany, 那么这个路径(import com.horstmann.corejava.*; )就不存在,这个语句就会出错;但是我的程序运行正常,为何呢?????????

#12


引用 2 楼 joynet007 的回复:
(.)表示当前的 路径 就是,比如说你现在 即如 D:\work\  这个文件夹下面  你 这个文件夹下面  新建一个 Hello.java 的文件 。 你就直接可以 在这个文件夹下面 进行编辑就可以哦!!

#13


引用 11 楼 afgkidy 的回复:
    我又有个例子如下: 
我在E:\Codes\java\com\horstmann\corejava\Test.java 这个是一个public 权限类,此文件中第一句是package com.horstmann.corejava; 
在E:\Codes\java\com\mycompany\MyTest.java 此文件中包含语句import com.horstmann.corejava.*; 
   



此文件中第一句是package com.horstmann.corejava; 
已经指明了"src包"的根目录是com目录,这就是当前路径了,在这个源文件*目录的子目录运行mytest自然不会出错,import com.horstmann.corejava.*; 是对的

#14


楼主好淫荡的头像

#15


引用 10 楼 cqmarlin 的回复:
    1.CLASSPATH有当前路径,因此你在E:\Codes\java下运行java刚好将其设置为CLASSPATH,如果你在其他路径下你的java就不能运行成功。 
    2.当前路径是程序的一个变量,你在哪个目录下运行程序(如javac),程序的当前路径就是这个路径并且在程序中可以使用这个当前路径,javac时默认当前路径在CLASSPATH中

#16


D:/java/com/horstman/corejava   有文件Test.java
D:/java/com/mycompany           有文件MyTest.java

文件内容如下:
//Test.java
package com.horstmann.corejava;
import java.util.*;

public class Test {
 public Test()
 {
   System.out.println("Test() constrcotor");
 }
}


//MyTest.java
import java.util.*;
//import com.horstmann.corejava.*;

public class MyTest
{
 public static void main(String[] args)
 {
   Test tst = new Test();
 }
}

我cd 到 D:/java/com/mycompany 文件夹下面然后javac 编译,失败了。
请问下MyTest.java 文件中,import 语句怎么写才引入Test 类呢?
谢谢~~~~~~~

#17


请指教,谢谢。

#1


该回复于2015-05-26 11:34:09被管理员删除

#2


(.)表示当前的 路径 就是,比如说你现在 即如 D:\work\  这个文件夹下面  你 这个文件夹下面  新建一个 Hello.java 的文件 。 你就直接可以 在这个文件夹下面 进行编辑就可以哦!!

#3


楼上和我说的是一个意思哈~

#4


虽然, classpath 没有指明,但是你在 cmd 中  就是 进入的这个 文件加 或者  你编译的时候 要用  javac D:\work\Hello.java   才能哦!! 所谓的当前就是 指D:\work 文件夹下了哦!
   

#5


明白当前意思了~~~
主要问题是另一个~~

#6


 有人给分吗?

#7


有人知道吗?唉~~我结贴率那么高的哦~~~~~

#8


引用 2 楼 joynet007 的回复:
(.)表示当前的 路径 就是,比如说你现在 即如 D:\work\  这个文件夹下面  你 这个文件夹下面  新建一个 Hello.java 的文件 。 你就直接可以 在这个文件夹下面 进行编辑就可以哦!!

#9


JDK ,环境配置 

最后配置JDK的环境变量:在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”。 

新建系统变量JAVA_HOME:D:\Java\jdk1.5.0_06; (建议:最好不要放中文目录下,或者带有空格的目录,哪怕系统默认的,也最好别放在那目录下.例如:Program Files 这个目录)

新建系统变量CLASSPATH:.;%JAVA_HOME%\lib;(注意:点号表示当前目录,不能省略) 

在系统变量Path的值的前面加入以下内容:%JAVA_HOME%\bin;(注意:这里的分号不能省略) 

到这里,JDK安装,设置环境变量完毕。 

注意:如果以后要安装诸如Eclipse、Borland JBuilder、JCreator、IntelliJ IDEA等集成开发环境(IDE,Integrated Development Environment),应该在IDE中编译运行一个简单的HelloWorld程序,以保证IDE可以识别出JDK的位置。 


祝楼主好运 !!!


#10


    1.CLASSPATH有当前路径,因此你在E:\Codes\java下运行java刚好将其设置为CLASSPATH,如果你在其他路径下你的java就不能运行成功。
    2.当前路径是程序的一个变量,你在哪个目录下运行程序(如javac),程序的当前路径就是这个路径并且在程序中可以使用这个当前路径,javac时默认当前路径在CLASSPATH中

#11


引用 10 楼 cqmarlin 的回复:
    1.CLASSPATH有当前路径,因此你在E:\Codes\java下运行java刚好将其设置为CLASSPATH,如果你在其他路径下你的java就不能运行成功。 
    2.当前路径是程序的一个变量,你在哪个目录下运行程序(如javac),程序的当前路径就是这个路径并且在程序中可以使用这个当前路径,javac时默认当前路径在CLASSPATH中


我又有个例子如下:
我在E:\Codes\java\com\horstmann\corejava\Test.java 这个是一个public 权限类,此文件中第一句是package com.horstmann.corejava;
在E:\Codes\java\com\mycompany\MyTest.java 此文件中包含语句import com.horstmann.corejava.*;

这时我在目录E:\Codes\java\com\mycompany 下面编译(javac MyTest.java),运行(java MyTest),运行正常。

按照上面2 的说法,此时我的当前路径应该是E:\Codes\java\com\mycompany, 那么这个路径(import com.horstmann.corejava.*; )就不存在,这个语句就会出错;但是我的程序运行正常,为何呢?????????

#12


引用 2 楼 joynet007 的回复:
(.)表示当前的 路径 就是,比如说你现在 即如 D:\work\  这个文件夹下面  你 这个文件夹下面  新建一个 Hello.java 的文件 。 你就直接可以 在这个文件夹下面 进行编辑就可以哦!!

#13


引用 11 楼 afgkidy 的回复:
    我又有个例子如下: 
我在E:\Codes\java\com\horstmann\corejava\Test.java 这个是一个public 权限类,此文件中第一句是package com.horstmann.corejava; 
在E:\Codes\java\com\mycompany\MyTest.java 此文件中包含语句import com.horstmann.corejava.*; 
   



此文件中第一句是package com.horstmann.corejava; 
已经指明了"src包"的根目录是com目录,这就是当前路径了,在这个源文件*目录的子目录运行mytest自然不会出错,import com.horstmann.corejava.*; 是对的

#14


楼主好淫荡的头像

#15


引用 10 楼 cqmarlin 的回复:
    1.CLASSPATH有当前路径,因此你在E:\Codes\java下运行java刚好将其设置为CLASSPATH,如果你在其他路径下你的java就不能运行成功。 
    2.当前路径是程序的一个变量,你在哪个目录下运行程序(如javac),程序的当前路径就是这个路径并且在程序中可以使用这个当前路径,javac时默认当前路径在CLASSPATH中

#16


D:/java/com/horstman/corejava   有文件Test.java
D:/java/com/mycompany           有文件MyTest.java

文件内容如下:
//Test.java
package com.horstmann.corejava;
import java.util.*;

public class Test {
 public Test()
 {
   System.out.println("Test() constrcotor");
 }
}


//MyTest.java
import java.util.*;
//import com.horstmann.corejava.*;

public class MyTest
{
 public static void main(String[] args)
 {
   Test tst = new Test();
 }
}

我cd 到 D:/java/com/mycompany 文件夹下面然后javac 编译,失败了。
请问下MyTest.java 文件中,import 语句怎么写才引入Test 类呢?
谢谢~~~~~~~

#17


请指教,谢谢。