Javac vs Java in -classpath选项

时间:2013-02-27 20:25:53

标签: java classpath javac

-classpathjavac

调用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的效果是什么。

提前致谢。

2 个答案:

答案 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。