从-classpath
和javac
java
选项有何不同?
例如:
javac -classpath MyJar.jar GetJar.java
java -classpath MyJar.jar:. GetJar
它的工作原理如下:
javac -classpath MyJar.jar GetJar.java
java GetJar
所以基本上在与javac
相关的第一个类路径需要在那里,另一方面在java命令行中它可能是可选的。为什么?你知道在什么情况下它是强制性的。更一般地说,-classpath
调用的javac
的效果是什么?-classpath
调用java
的效果是什么。
提前致谢。
答案 0 :(得分:10)
一个是用于编译的类路径。另一个是用于运行的类路径。而且他们 不 必须是同一件事。编译过程所需的类集是所有正在编译的类所引用的类。而您的运行时JAR可能正在调用一个空主方法且没有依赖项的独立类。
请记住,在运行时类依赖项是动态解析的,即只在需要时才加载类(这是一种泛化,引导和系统类总是加载)。
答案 1 :(得分:1)
本文件包含您的问题的答案
http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html
每次使用-classpath
都是非常耗时的工作。相反,使用环境变量(如果您正在处理诸如Java Mail之类的包)
classpath用于编译。 Javac
是Java编译器,它将代码转换为字节代码。
当涉及java
时,它用于运行Java源文件/ jar。