Java工程文件详解
前言 (3)
1.Java 工程详解 (4)
2.android:targetSdkVersion 详解 (7)
3.Android SDK版本号与API Level 对应关系 (8)
对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑。更可恶的是莫名其妙的路径问题,在Eclipse编写Java程序中,出现频率最高的错误很可能就是路径问题。
这些问题原因其实都是一个,就是关于Java工程内的文件结构理解不清
1.Java工程详解
R.java文件是Android项目自动生成的终态类,它包含以下静态类:
R.id      组件资源引用
R.drawable  图片资源
R.layout  布局资源
shell创建文件并写入内容
R.String  文字资源
R.style    主题资源
R.attr
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目录和bin目录很重要,通常情况下,src目录只存放源代码,而所有工程相关的其他输出文件都会存放在bin目录下,最为重要的是:用Eclipse进行打包时根目录就是bin,用jar
包调用工程的时候默认的路径也要以bin为准,到bin的层级数目就是最终的数目,因此可以说bin是最为重要的目录,而不是src)
这时候我们在src目录下创建一个类,就叫做TestClass,里面有一个main方法如下:
Java代码
1.public static void main(String[] args){
2.System.out.println(new File("").exist());
3.}
同时在src目录下创建一个空的文件。什么都不要做,保存工程,打开资源管理器,我们来查看workspace/TestProject /bin目录,下面会存在两个文件:TestClass.class和。
此时我们设想,程序的内容就是检查文件是否存在,按照现在的目录规划,我们认为,在控制台上将打出“true”,ok,我们回到 eclipse中,运行TestClass这个类。控制台输出了:false!
为什么我们得到了并非我们预期的结果呢?先别着急,我们打开windows的命令行界面(或者linux的s
hell都ok),将目录切换到 workspace/TestProject/bin 目录下,执行如下命令java TestClass,看看出现什么结果?true!对,就是true。
为啥同样的程序会有不同的结果呢?这个答案很简单,就出在本身的一个参数-cp(classpath)上!
eclipse默认的classpath包括三个部分:
1、jdk的bin目录;
2、工程引用的所有其他jar包路径
3、工程根路径(对,不是bin路径)
那么我们就可以理解来,在classpath的根路径中并不存在这个文件,用相对路径描述,这个文件实际存在于 和。也就是说,classpath默认的路径是workspace-testproject下,而不是workspace- testproject-bin下,所以才不到这个文件。这是经常出现的问题!
那么这个时候就有疑问了,如果我们打包发布工程,是不是jar包中会把testproject根目录作为包中的根目录呢?幸运的是,eclipse考虑好了这个问题。通过eclipse的导出jar能力,bin目录会作为jar的根
目录,而不是bin 的上层的工程目录,这样类的包路径就是正确的,同时,工程目录下的资源文件、配置文件等也被拷贝到这里,也就是相当于把工程目录下的这些文件拷贝到来bin目录后再打包,这样文件的相对路径也就符合默认的 classpath了。
从上面可以总结出来:Eclipse直接运行时,是以工程的根目录作为基准目录。而打包成jar运行时,则是以bin目录作为基准目录。这两者相差了一级目录,如果理解的不好,可能会导致错误。希望大家注意!
BuildPath中只支持加入jar文件,具体方法如下:
在eclips里在工程名上右键->build path->contigure bud path->java build path里有个
libraries->
add external jars = 增加工程外部的包
add jars = 增加工程内包
add library = 增加一个库
add class folder = 增加一个类文件夹
下面着重介绍add library中的User Libraries
添加User Library,具体做法如下:
1. 选中工程右键->build path->
2. 选择User Library->next
3. 点击User Library按钮
4. 点击new按钮
5. 输入Library name(我要导入的是struts 2.1.6的jar包和jdbc的jar包,为了方便记忆,就可以用如Struts 2.1.6 Library)
6.点击ok
7.选中该user library, 然后点击add jars
8.到对应jar包,依次确定即可。
User  Liberary加到Eclipse中,只是eclipse中生效,就是只有Eclipse知道那些引用的类放在哪里,但是如果你要web工程启动正常,
是要告诉Tomcat等容器,你的jar包是在哪里(放在lib目录下,容器就知道了)。所以就有这种情况出现,在eclipse中加用户库,只是为了调
试,不加入用户库,eclipse不到import的类,就会出现红的X号,不把用户库中的JAR包放到lib下,容量不到引入的类,就会报错。
add jar 和add external jars 与add library 中User Libraries的区别是:通过“add jar” 和“add external jars”添加的jar包作为程序的一部分被打包到最终的程序中。通过“User Libraries”添加的jar包不是。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。