javac -classpath和java -classpath
JDK安装完后如果没有设置环境变量CLASSPATH,则系统默认的类路径包括java系统类路径和当前目录。比如你的当前工作目录是E:\,在此目录下有class1.class,你可以直接使用"java class1"运行这个类。但是如果切换到别的目录,再使用"java class1"会出现NoClassDefFoundError,此时需要指定运行参数classpath。使用"java -classpath E:\ class1"运行class1.class。
如果class1引用了其他的类,那么被引用的类也需要在E:\目录下,否则应该在classpath参数中指定被应用类所在的目录,比如class1引用了class2.class,class2.class位于F:\目录下,使用
"java -classpath E:\;F:\ class1"来运行class1。如果被引用的是一个jar文件,那么在classpath中需要指明具体的jar文件,而不能只包括jar文件所在的目录。比如,class1引用了jar1.jar,这个jar文件位于C:\目录下,则使用"java -classpath E:\;C:\jar1.jar class1"来运行class1。
在非class1.class所在的目录下运行class时,classpath参数需要指明class1以及class1所引用的类的路径,如果在class1.class所在目录运行该类,同样需要在classpath中包括当前目录,因为使用-classpath时不再会默认当前目录为类路径。比如在E:\下要使用"java -classpath .;F:\ class1"来运行class1。
"java -classpath e:\ class1"不能写成"java class1 -classpath e:\"。
使用javac编译java文件时,可以使用-classpath指定class1.class所引用的类文件所在的目录。在D:\目录下编译class1.java使用"javac E:\class1.java -classpath F:\"如果引用的是jar文件,同样需要指明jar文件。"javac E:\class1.java -classpath C:\jar1.jar"。
javac -classpath F:\ E:\class1.java可以写成javac E:\class1.java -classpath F:\。