Javac vs Java in -classpath选项

javacjava调用-classpath选项有什么区别

例如:

 javac -classpath MyJar.jar GetJar.java java -classpath MyJar.jar:. GetJar 

它的工作原理如下:

 javac -classpath MyJar.jar GetJar.java java GetJar 

所以基本上在与javac相关的第一个类路径需要在那里,另一方面在java命令行中它可能是可选的。 为什么? 你知道在什么情况下它是强制性的。 更一般地说, javac调用的-classpath的效果是什么, java调用的-classpath的效果是什么。

提前致谢。

一个是用于编译的类路径。 另一个是用于运行的类路径。 而且他们不必是同一件事。 编译过程所需的类集是所有正在编译的类所引用的类。 而您的运行时JAR可能正在调用具有空main方法且没有依赖项的独立类。

请记住,在运行时类依赖项是动态解析的,即只在需要时才加载类(这是一种泛化, 始终加载引导和系统类)。

本文档包含您的问题的答案

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html

每次使用-classpath是一项非常耗时的工作。 相反,使用环境变量(如果您正在处理诸如Java Mail之类的包)

classpath用于编译。 Javac是Java编译器,它将代码转换为字节代码。

说到java它用于运行Java源文件/ jar。