我正在尝试深入了解 java 编译。所以我收起 IDE 并开始使用 MS-DOS 命令行...
我创建了一个简单的项目,如下面的树中所述:
示例应用程序
|____**src**
|_____pack
|______Sample.java
|____**classes**
这是 Sample.java 源代码:
public class Sample
{
private String s = new String("Hello, world");
public Sample(){
System.out.println(s);
}
}
我只想编译这个类,所以我使用了 javac 命令:
prompt\SampleApp\src>javac -d ..\classes -sourcepath . pack\Sample.java
一切正常,但我没想到,因为我删除了我的CLASSPATH
编译我的 Sample.java 文件之前的环境变量。因此,由于编译器无法找到 java.lang.String 类文件,我预计会出现编译器错误。
我读了这篇文章http://www.ibm.com/developerworks/java/library/j-classpath-windows/这帮助我理解了很多事情。文章作者说默认的类路径是当前工作目录。但我不明白为什么我的源代码编译没有错误。有人可以向我解释一下吗?
因此,由于编译器无法找到 java.lang.String 类文件,我预计会出现编译错误。
简短的回答是编译器knows在哪里可以找到所有标准 Java SE 库类,而无需您告诉它。
更长的答案是String
在 bootclasspath 上找到类。这是隐含地由设定的javac
命令来引用JDK安装中的相关JAR。这javac
命令在常规类路径上查找内容之前先搜索 bootclasspath。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)