关于Eclipse编译和执行文件时,后台默认执行动作的思考

做为编程学习的新手,在我学习io原理的过程,需要创建和调用File文件,但是发现创建文件或者调用时,默认的路径与自己想当然的认为有出入。

问题描述一下:

当我用Eclipse创建了一个BufferedReaderDemo.java文件,其中有一句:

FileWriter fw = new FileWriter("write.txt")

1、当保存后,执行run as java application后,发现在我的工程(project)目录下生成了"write.txt",而不是class的输出文件夹web(默认为bin)下,见“Properties -- java buid path”。

关于Eclipse编译和执行文件时,后台默认执行动作的思考_第1张图片

2、因为我一直认为,Eclipse执行class时,肯定在class输出文件下路径下调用执行语句,即我的默认的语句一定是“java com.self.study.lesson2.io.BufferedReaderDemo”。

3、但是执行的结果告诉我,一定是我没搞清楚,最后我发现原来Eclipse执行class文件时是带参数,即java -cp ,见dos说明“-cp <目录和 zip/jar 文件的类搜索路径>”,

所以其实Eclipse默认通过project目录下执行“java -cp web  com.self.study.lesson2.io.BufferedReaderDemo”。

4、所以问题的答案找到了:就是执行class的默认路径是在工程文件下,如我的javabase。


总结:

Eclipse的编译执行过程:

1、保存文件时,Eclipse默认自动编译java源文件,即获取当前文件的绝对地址,如我的java文件“C:\workspace10\javabase\src\com\self\study\lesson2\io\BufferedReaderDemo”,然后通过Eclipse配置的jdk路径(应该Eclipse配置的优先级大于环境变量),调用javac.exe。

2、生成class文件时,Eclipse会获取“Properties -- java buid path”中"class output folder"配置的相对路径,加上工程的当前路径“C:\workspace10\javabase”和包路径,可以获取最终class文件的生成路径,即C:\workspace10\javabase\web\C:\workspace10\javabase。


3、当我们在Eclipse中执行class文件时,即点击“run as java application“,其实Eclipse默认在project目录下执行java -cp  + 【 class output folder】 + package path。

你可能感兴趣的:(java学习)