javac默认将编译后的类文件(*.class)存放在与源文件(*.java)相同的位置,且当源文件中的package路径与实际存放路径不匹配时也可以正确编译。
javac如果不指定-d,那么,源码中package不生效,生成的类文件与源文件位置相同;如果指定了-d,那么,类文件(*.class)将更具package信息来生成。
源路径就是java在其中寻找源文件的那个目录,一般为src。用源路径指定编译器应该到哪些目录查找源文件的层次结构。例如:
javac -d bin -sourcepath src src\com\client\HttpServelt.java
类文件目录 依赖的源文件目录 要编译的源文件
在源路径中可以有多个目录,使用分号来进行分隔,在实际中,一个.java文件一般会依赖同一个项目中的其他.java文件和来自第三方的类或jar文件,因此,源文件目录通常只有一个,但会有多个类路径
javac -classpath bin;lib\tools.jar src\com\client\HttpServlet.java
依赖的类文件目录,都将被添加到类路径
一个完整的命令:编译程序
javac -d bin -sourchpath src -classpath C:\lib1\classes;C:\lib2\classes src\com\client\HttpServet.java
生存类文件存放目录 依赖的源目录add to源路径 依赖的类目录add to类路径,还可以是jar包 要编译的源文件
运行程序,只需指定两项内容
1)类路径
2)包含main方法的完全限定名(即package定义的那个名称+类名)
java -classpath bin com.client.HttpServlet
该类名必须在类路径中的某处找到
执行器会去类路径目录下,按照com\client\HttpServlet.class去寻找类文件,全部路径应该是bin+com\client\HttpServlet.class。
注意:具有匹配包名称(com.client等)的目录绝不会直接包含在源路径或类路径中。
参考:https://www.ibm.com/developerworks/cn/java/j-classpath-windows/