`
takkymj
  • 浏览: 126879 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

理解eclipse(java工程)的工作目录

阅读更多
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方法如下:
Java代码
public static void main(String[] args){  
    System.out.println(new File("test.txt").exist());  


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兜了个圈子,这种做法有些晦涩,但是不失为软件工程的一个启发。
分享到:
评论

相关推荐

    java实现体温单实例-eclipse-java工程

    总的来说,这个“java实现体温单实例-eclipse-java工程”涵盖了Java基础、面向对象编程、数据结构、GUI编程和测试等多个方面。通过学习这个实例,开发者不仅可以掌握Java编程的基本技能,还能了解到如何在Eclipse中...

    Eclipse JAVA EE 创建Web工程

    在Eclipse中创建Java EE Web工程是开发基于Java的Web应用程序的重要步骤。这个过程涉及到配置开发环境、设置项目属性以及创建必要的文件结构。下面将详细解释如何在Eclipse中进行这些操作。 首先,确保你已经安装了...

    eclipse java反编译工具

    在Eclipse中安装Java反编译工具,可以方便开发者查看和理解第三方类库的工作原理,而无需原始源代码。 标题中的“eclipse java反编译工具”指的是在Eclipse中使用的特定反编译插件,这些插件能够集成到Eclipse的...

    java象棋eclipse工程

    【Java象棋Eclipse工程】是一个专门为开发和调试象棋程序设计的项目,它基于流行的集成开发环境Eclipse构建。Eclipse是一个强大的开源IDE,广泛用于Java编程,它提供了丰富的功能,包括代码编辑、调试、构建和版本...

    蜘蛛纸牌 eclipse Java

    【标题】"蜘蛛纸牌 eclipse Java" 涉及到的是使用Java编程语言在Eclipse集成开发环境中构建一个蜘蛛纸牌游戏的项目。Eclipse是一款广泛使用的开源Java IDE,为开发者提供了丰富的工具集,便于编写、调试和优化Java...

    在Eclipse Java EE IDE for Web Developers下装Jad插件

    在Eclipse Java EE IDE for Web Developers中安装Jad插件是一项重要的开发任务,因为Jad是Java反汇编器(Java decompiler)的缩写,它允许开发者查看和理解已编译的Java类文件的原始源代码。这对于调试、逆向工程...

    Quartz 2.2.2 eclipse java 工程开发环境以及官方examples示例

    在这个 Eclipse Java 工程中,已经预先配置好了 Quartz 的开发环境,使得开发者可以快速地开始使用 Quartz 进行定时任务的开发。 1. **Quartz 框架**:Quartz 是基于 Java 的任务调度库,它可以被用来执行一次性的...

    0912班Java作业(包含完整eclipse工程文件)

    这篇文档将深入解析“0912班Java作业”压缩包中的内容,它是一个针对西安电子科技...通过深入学习和理解这些作业,学生们不仅可以掌握Java语言的核心概念,还能熟悉软件开发的过程,为将来的工作和项目打下坚实的基础。

    Java基础加强_eclipse工程管理与快捷键配置

    本资源“Java基础加强_eclipse工程管理与快捷键配置”旨在帮助初学者和开发者深入理解如何在Eclipse中有效地管理和优化工作环境,特别是针对Java项目的操作以及快捷键的设置。 首先,让我们探讨Eclipse中的工程管理...

    Thinking In Java 4th可直接导入Eclipse工程

    它包含了运行书中示例代码所需的jar包以及可以直接导入到Eclipse中的完整Java工程。 1. **Eclipse IDE**:Eclipse是一款开源的、跨平台的集成开发环境,广泛用于Java应用的开发。它提供了代码编辑、构建自动化、...

    EasyPR-Java的Eclipse工程

    将EasyPR作为Eclipse工程导入,意味着开发者可以快速地在Eclipse中设置好环境,开始进行车牌识别的开发工作,而无需手动配置各种依赖库。 在导入这个工程后,你需要确保Eclipse已经正确配置了Java和JDK环境。接着,...

    Eclipse打开Keil工程图解教程

    Eclipse是一款流行的开源集成开发环境,广泛用于Java和其他编程语言的开发。而Keil是ARM微控制器开发的首选工具,尤其适用于嵌入式系统开发。将这两者结合,我们可以获得一个功能强大的开发环境,特别适合那些习惯于...

    Eclipse 项目实战----成就你的JAVA工程师梦想

    本文将围绕“Eclipse项目实战”这一主题展开讨论,旨在帮助读者更好地理解如何利用Eclipse进行Java项目的开发,并分享一些个人的经验总结、注意事项以及技巧等。 #### 一、Eclipse简介 Eclipse是一款开源的、跨...

    JAVA3D动画 Eclipse RCP

    在【参考SRC】这个压缩包中,可能包含了创建此类项目的源代码示例,你可以通过分析和学习这些代码来进一步理解和掌握在Eclipse RCP中实现JAVA3D动画的技术细节。通过不断实践和调整,你可以创建出更具复杂性和交互性...

    Java 超市管理系统 Eclipse

    1. **Java基础**:理解并运用Java面向对象编程的基本概念,如类、对象、封装、继承、多态等。同时,要熟悉Java集合框架,如ArrayList、HashMap等,它们在处理数据存储和操作时起到重要作用。 2. **Swing或JavaFX**...

    最新版java反编译eclipse插件

    Java反编译是开发者在分析或逆向工程Java代码时常用的一种技术,它允许我们将已编译的.class文件转换回可读的源代码形式。Eclipse是一款广泛使用的Java集成开发环境(IDE),提供了丰富的功能来支持开发过程。"最新...

    Eclipse工程 java排序带main函数可运行控制。

    在Eclipse中,一个典型的Java工程结构可能包括以下几个部分: 1. **src** 文件夹:存放源代码,这里的 "javaSort" 可能是放在这个目录下。 2. **bin** 文件夹:编译后的字节码(.class)文件会被放到这里。 3. **....

    eclipse 设置JAVA API中文帮助

    本文将详细介绍如何在Eclipse中设置JAVA API的中文帮助,以便更好地理解和使用API。 首先,JAVA API是Java开发中的一个重要资源,它包含了Java类库的所有公共类、接口、方法和字段的详细文档。通过API,开发者可以...

    Eclipse插件Java反向生成UML类图,package依赖关系图 ,ModelGoon-4.4.1

    总结来说,ModelGoon-4.4.1是Eclipse开发环境中的一款实用工具,它提供了反向工程和包依赖分析的功能,帮助开发者更好地理解和管理复杂的Java项目。通过简单的安装步骤和直观的操作界面,无论是初学者还是经验丰富的...

    Java五子棋游戏eclipse源工程文件

    【Java五子棋游戏eclipse源工程文件】是一个适合初学者和大学生的编程项目,它主要涉及了Java语言和MySQL数据库的使用。这个项目提供了一个完整的源代码库,旨在帮助学习者理解如何在Java环境下开发一个简单的五子棋...

Global site tag (gtag.js) - Google Analytics