eclipse是非常常用的开发平台,利用eclipse的插件平台,可以将eclipse扩展成为非常优秀的专有语言ide,这里主要提到一个关于eclipse利用jdt插件开发java应用时遇到的问题。
首先我们说明一下elipse对工程的管理。eclipse的基本工程目录叫做workspace,每个运行时的eclipse实例只能对应一个workspace,也就是说,workspace是当前工作的根目录。我们在workspace中可以随意创建各种java相关的工程,普通的java应用,java web应用,web service应用等,我们仅拿普通的java application来说明。
通常我们创建一个java application工程,会创建一个工程目录,假设工程名称为:TestProject,那么在当前的workspace里讲创建一个目录名为TestProject,同时我们选择src作为源码文件夹,bin作为输出路径,这样就构成了一个基本的java application工程。,在workspace中存在如下文件夹:
+workspace
+TestProject
-src
-bin
这个时候我们创建的代码将写入src目录,输出的class文件将存在于bin目录。
这时候我们在src目录下创建一个类,就叫做TestClass,里面有一个main方法如下:
public static void main(String[] args){
System.out.println(new File("test.txt").exist());
}
同时在src目录下创建一个空的文件test.txt。什么都不要做,保存工程,打开资源管理器,我们来查看workspace/TestProject/bin目录,下面会存在两个文件:TestClass.class和test.txt。
此时我们设想,程序的内容就是检查test.txt文件是否存在,按照现在的目录规划,我们认为,在控制台上将打出“true”,ok,我们回到eclipse中,运行TestClass这个类。控制台输出了:false!
为什么我们得到了并非我们预期的结果呢?先别着急,我们打开windows的命令行界面(或者linux的shell都ok),将目录切换到workspace/TestProject/bin目录下,执行如下命令java TestClass,看看出现什么结果?true!对,就是true。
为啥同样的程序会有不同的结果呢?这个答案很简单,就出在了java.exe本身的一个参数-cp(classpath)上!
eclipse默认的classpath包括三个部分:
1、jdk的bin目录;
2、工程引用的所有其他jar包路径
3、工程根路径(对,不是bin路径)
那么我们就可以理解来,在classpath的根路径中并不存在这个test.txt文件,用相对路径描述,这个文件实际存在于src/test.txt和bin/test.txt。那么这个时候就有疑问了,如果我们打包发布工程,是不是jar包中就会有bin这个目录呢?幸运的是,eclipse考虑好了这个问题。通过eclipse的导出jar能力,bin目录会作为jar的根目录,而不是bin的上层的工程目录,这样类的包路径就是正确的,同时,工程目录下的资源文件、配置文件等也被拷贝到这里,也就是相当于把工程目录下的这些文件拷贝到来bin目录后再打包,这样文件的相对路径也就符合默认的classpath了。
eclipse实际是提供来一种策略来实现源代码文件和配置\资源文件的单独管理能力,利用classpath兜了个圈子,这种做法有些晦涩,但是不失为软件工程的一个启发。
分享到:
相关推荐
数据库系统课程设计目的在于加深对关系数 据库理论知识的理解,通过使用具体的 DBMS,掌握一种实际的数据库管理系统并掌握其 操作技术,熟练掌握使用数据库前端开发工具(如 VB、C++、Java、Delphi、PowerBuilder 等...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
Eclipse中常见图标说明,方便理解Java中的类继承和实现关系,以及其他视图中常见图标的说明,具体包括: Objects、Build Path、Compare、Junit、Search、Hierarchy Type等内容中的常见图标; 绝对权威的Eclipse中图标...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
技术关键词:Java编程语言、面向对象编程(OOP)、Java虚拟机(JVM)、Java开发工具(如Eclipse、IntelliJ IDEA) 内容关键词:变量、数据类型、运算符、控制流、类、对象、继承、多态、异常处理、集合框架、泛型、...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
创建Maven版Java工程 · 21.在Eclipse中执行Maven命令 · 22.在Eclipse中创建Maven版的Web工程 · 23.通过servlet-api进一步理解provided依赖范围 · 24.通过jsp-api体验jar包之间的冲突 · 25.导入Maven工程 ...
同时,为了方便部分初学者对Java语言的掌握,还专门安排了一章内容来讲述Java编程的基础知识。 本书的重点有两方面内容:对Eclipse开发环境的掌握和对手机游戏的开发。其中,帮助读者掌握手机游戏的开发技巧是本书...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...
四、Minjava是一种Java逆向工程软件,它有助于理解一些已经存在的Java软件的体系结构和行为。 UuDeJava是JavaClass文件的反编译工具。未编译的Java源程序输出到与Class相同的目录。内部使用jad.exe。解译类文件时,...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...
对于eclipse的使用的视频,看过之后,将会对你写带来不小的帮助哟,很好用,视频很容易理解,容易上手.
两个工程直接导入Eclipse,即可运行, ps:一个工程运行两次也可以,需要注意端口号,代码默认如果连接的端口号是3003,则监听3004端口,相反同理。联机前需要确保两台计算机同时处于局域网或外网;
技术关键词:Java编程语言、面向对象编程(OOP)、Java虚拟机(JVM)、Java开发工具(如Eclipse、IntelliJ IDEA) 内容关键词:变量、数据类型、运算符、控制流、类、对象、继承、多态、异常处理、集合框架、泛型、...
技术关键词:Java编程语言、面向对象编程(OOP)、Java虚拟机(JVM)、Java开发工具(如Eclipse、IntelliJ IDEA) 内容关键词:变量、数据类型、运算符、控制流、类、对象、继承、多态、异常处理、集合框架、泛型、...
技术关键词:Java编程语言、面向对象编程(OOP)、Java虚拟机(JVM)、Java开发工具(如Eclipse、IntelliJ IDEA) 内容关键词:变量、数据类型、运算符、控制流、类、对象、继承、多态、异常处理、集合框架、泛型、...
技术关键词:Java编程语言、面向对象编程(OOP)、Java虚拟机(JVM)、Java开发工具(如Eclipse、IntelliJ IDEA) 内容关键词:变量、数据类型、运算符、控制流、类、对象、继承、多态、异常处理、集合框架、泛型、...