javac:
(1)编译源文件成为字节码
(2)-d参数用于指定字节码文件所在包的位置,称为目标位置。如果源文件使用了package命令,则会自动在目标位置下创建完整的包目录,如源文件使用了 package com.whu.swe.project1; ,-d参数后面是“f: argetclass”,则会在“f: argetclass”下生成这样的完整目录及文件"comwhusweproject1classname.class"。如果不指定-d,则目标位置默认为源文件所在目录下,且不会生成包名目录。
(3)-sourcepath和-classpath差不多,都是用来指定依赖项(尤其要注意,前者指定的并不是要当前需要编译的源文件位置,而是依赖项的位置)的只不过前者是指定源文件的位置,后者是指定字节码的位置。有多个位置,则用分好隔开。如果不指定这两个参数,则用环境变量里的参数。需要注意的是,指定jar包时需要指定到jar包的名字,如:"f:javalibsjunit.jar",而指定源文件或者解压后的字节码是,则指定到包所在的目录就可以了,如上面(2)的例子,指定到“f: argetclass”就可以了,详情可以参考 javac参数(-classpath, -sourcepath)详解 。
java:
(1)这个命令一定要在包名所在的目录中运行,也就是说,当前工作目录必须是包名所在的目录。指定class时,必须带上包名,如com.whu.swe.project1.classname。
综上,编译找的是源文件的文件,运行或引用则找的是包(jar,文件夹或者war)的位置。