先声明,我新手,如果问题弱智的话别笑我jdk安装是默认路径
path .;C:\Program Files\Java\jdk1.6.0_16\bin
classpath .;C:\Program Files\Java\jdk1.6.0_16\lib在D盘根目录下我建立了一个名为“java程序”文件夹,代码都是在这个文件夹里写的
每次编译的时候都要用命令 cd D:\JAVA程序 转下路劲,不想那么麻烦
我目前的理解是classpath 就是指明类的位置嘛
所以将 D:\JAVA程序 加进classpath 环境变量里面
.;C:\Program Files\Java\jdk1.6.0_16\lib;D:\JAVA程序 目的是想在doc跳转到D盘下就直编译,而不在用cd D:\JAVA 这个命令
可为什么说找不到java文件呢?再用cd D:\JAVA 跳转下,就可以编译了并执行了
我认为手动两者不是一样的功能么?为什么一个能编译一个不能?
请高手解释下,为什么!
path .;C:\Program Files\Java\jdk1.6.0_16\bin
classpath .;C:\Program Files\Java\jdk1.6.0_16\lib在D盘根目录下我建立了一个名为“java程序”文件夹,代码都是在这个文件夹里写的
每次编译的时候都要用命令 cd D:\JAVA程序 转下路劲,不想那么麻烦
我目前的理解是classpath 就是指明类的位置嘛
所以将 D:\JAVA程序 加进classpath 环境变量里面
.;C:\Program Files\Java\jdk1.6.0_16\lib;D:\JAVA程序 目的是想在doc跳转到D盘下就直编译,而不在用cd D:\JAVA 这个命令
可为什么说找不到java文件呢?再用cd D:\JAVA 跳转下,就可以编译了并执行了
我认为手动两者不是一样的功能么?为什么一个能编译一个不能?
请高手解释下,为什么!
classpath不对 啊.;C:\Program Files\Java\jdk1.6.0_16\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_16\lib\tools.jar;
那你说的问题与classpath无关。cmd是操作系统的,而不是java的。
例如你要用javac命令编译.java文件,也要在系统环境变量的path添加jdk/bin才能使用这个命令。
设置classpath是为了寻找已经编译好的.class文件。
有的.class文件是统一压缩到.jar文件里的,就需要把这个.jar文件地址添加到classpath里。如果嫌每次打开cmd编译都要cd D:\JAVA这一操作麻烦,可以修改一下注册表,网上搜一下。
修改好后就可以在.java所在文件夹点击右键,有选项可以直接从该目录打开cmd。前提是你要修改一下注册表。
也有其他方法可以达到目的。
貌似明白了一点点,classpath的作用只是指明.class文件位置的
而不是说编译的时候会按照classpath路径去找需要编译的文件 当编译结束之后,生成.class文件
在执行编译好了的程序文件时,java会按照classpath路径去找.class文件解释并执行 结论就是:classpath只具备告诉虚拟机.class的位置,不具备寻找需要编译的.java的位置
2、如果没有设置 CLASSPATH,在当前目录找,就好像 CLASSPATH 是“.”一样。
3、如果 CLASSPATH 所指的目录里没有 Dog.class 这个文件,那么就在 CLASSPATH 所指的目录里找 Dog.java。
4、如果找到了 Dog.java,那么检查 Dog.java 里有没有定义 Dog 这个类,如果有,编译 Dog.java
5、如果没有,则报错。
6、如果 Dog 类中同样引用了其他的类,如 Cat,那么按照相同的方法找 Cat。附:javac 有两个参数,-classpath 和 -sourcepath,其中 -classpath 覆盖环境变量 CLASSPATH,而如果使用了 -sourcepath,那么第 3 步找 Dog.java 时就在 -sourcepath 所指定的目录下找,如果没有使用 -sourcepath,第 3 步就在 -classpath 或者 CLASSPATH(没有指定 -classpath)指定的路径或者“.”(两个都没指定)下找。而用 java 命令执行程序时,所有的类(包)都在 CLASSPATH 下找,java 命令也有一个参数 -classpath(或简写为 -cp),如果指定,覆盖系统 CLASSPATH。