Java项目的结构
-------siwuxie095
以 Hello World 为例
这个工程用一个文件夹表示,被放置在左侧的资源管理面板 Package Explorer 中
展开后:
可以看到一个
src 文件夹,用于存放项目的源代码
〔
src 即 source 也即 source code 〕
而
JRE System Library 即当前工程所需要的运行时,它的版本是
在创建这个工程时所选择的JRE版本,这里是 jre(被我个人命名)
展开
JRE System Library:
下面有很多
jar 格式的包,即系统的运行时提供给程序的运行环境和开放的 API
展开
src:
可以看到
default package,即默认包,下面是类
在正规的开发环境中,"使用默认包 default package,在下面创建类"
的做法是非常不可取的
规范的做法:在默认包下创建它的子包〔实际上就是替代了默认包〕
(先删掉上面的
Test.java,在 default package 上:右键->New->Package)
包名的命名规则:
如:网站名为:www.siwuxie095.com,则当前的包名规则是反过来的
即:com.siwuxie095,第一个代表公司性质 commercial 商业性质;
第二个是公司名称;
接下来是项目名称,如:hello,即 com.siwuxie095.hello
接下来继续添加,这时的包名就是按照功能来划分的了,如:这
里创建的第一个包是用来运行和开启程序的,可以命名为main,
即
com.siwuxie095.hello.main
Finish 后,一览:
默认包
default package 就变成了 com.siwuxie095.hello.main
同时自动创建了一个类
一般情况下,一个应用程序应该遵循MVC的结构规则
〔
M 即 Model 模型;V 即 View 视图、界面;C 即 Control 控制 〕
显然,这里的
main 包存放的就是用于控制的代码
可以在 src 上,右键->New->Package,继续创建包
视图:com.siwuxie095.hello.view
模型:com.siwuxie095.hello.model
三个基本包创建完成,如果项目非常复杂,程序的包结构也会非常复杂
包创建完成后,首先要创建程序的主要入口,即 主方法,
在
com.siwuxie095.hello.main 上,右键->New->Class
Name:Main,勾选上 public static void main(String[] args)
接下来,如果要为项目创建一个用于储存模型的类,就要放到
com.siwuxie095.hello.model 包中,如:在游戏项目中,游戏
地图、人物属性等都属于数据模型,应该放到此包中
最后,如果项目还需要添加视图
和
用户界面,就要放到
com.siwuxie095.hello.view 包中,存放显示视图的类
创建完成一览:package-info.java 可以删除
包和类都创建完成后,它们在硬盘中储存情况:
在资源管理器中找到
Eclipse 的工作空间 workspace,
打开项目
Hello World
src 下的 com.siwuxie095.hello.main,每一个点都代表一级文件结构
因为在工程中,main、model、view 这三个包的前缀都一样,
即
截止到
hello,都是储存在同一文件结构中,到了它们本身就
分开成
三个
文件夹存储
返回到项目 Hello World 的目录下,可以看到一个 bin 文件夹,
这个
bin 路径在 Eclipse 的工程管理面板(或 资源管理面板)中
是不可见的,bin 是用来存放当前 Eclipse 实时编译的 .class 文件,
它的文件夹结构和
src 完全相同
(.class 文件 即 Java的二进制文件)
当然,如果需要,也可以资源管理器中直接创建包的结构
如:在
src 下的 hello 目录下,创建 network 文件夹,这样就创建了一个
新的
network 包
不过在 Eclipse 的工程中还没有反应过来,需要手动刷新
点击工程项目名
Hello World,按 F5 刷新,或 右键->Refresh 即可
还可以为当前包创建子包,如:在
view 下创建文件夹 img,
用于存放图像,仍需到
Eclipse 中点击当前的工程,手动刷新,
才能显示
在工程文件夹目录下还可以创建其他文件夹,最常出现的是
一个名为
lib 的文件夹,可以存放一些第三方的库,直接复制
粘贴过来即可,如:复制粘贴一个
gson-2.8.0.jar
回到
Eclipse 中,手动刷新一下,显然,lib 和 src 文件夹是同一级的
lib 下的 gson-2.8.0.jar 只是出现在了工作的环境当中,并没有被工程所引用
这时选中
gson-2.8.0.jar,右键->Build Path->Add to Build Path,
将其添加到
Build Path,会出现一个新的结构:Referenced Libraries,
即
被引用的库,当一个jar包出现在这里,就说明它已经被当前工程所引用
且可以展开这个包,观察其目录结构,显然,其包名是符合命名规范的
这样,你就可以在工程中引用此包中的内容
如:com.google.gson 中包含了 JsonObject.class
就可以直接引用:
运行一览:输出一个空大括号,即代表一个空的Json数据
【made by siwuxie095】
Java项目的结构的更多相关文章
- (一)JAVA项目(非web项目)部署到windows服务器运行
[转]http://blog.csdn.net/tracy19880727/article/details/11205063 一般服务器运行的几乎都是web项目,今天遇到一个问题,把写好的Java项目 ...
- eclipse集成maven3后,创建java项目详细图解
1.创建一个Java项目 1)File--->New--->Other--->Maven--->Maven Projet 2)选择maven-archetype-quickst ...
- Eclipse JAVA项目的 目录结构 和 导入
说明:本文所有测试以java工程为例: 1. Eclipse下的java工程目录 eclipse的基本工程目录叫做workspace,每个运行时的eclipse实例只能对应一个workspace,也就 ...
- idea中的java web项目(添加jar包介绍)和java maven web项目目录结构
java web项目 web项目下web根目录名称是可以更改的 idea中新建java web项目,默认src为Sources Root,当然也可以手动改,在Sources Root下右键只能新建Pa ...
- 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行
一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的. 对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打 ...
- 像Maven一样构建java项目的目录,更好的管理java工程的源码
都知道maven具有管理Java或者Javaweb的功能.我个人尤其看中的是其代码层次的分离.不同的代码在不同的文件夹下.这是在eclipse新建一个普通的工程无法实现的.而如果用maven实现有时候 ...
- 用Ant实现Java项目的自动构建和部署
原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml 本文请勿转载! Ant是一个Apache基金会下的跨平台的构 ...
- 【dubbo】dubbo项目基本结构及provider构建
dubbo项目基本结构如下,分别部署于不同服务器: 1.provider(接口API 实现) 2.consumer(web) 3.zookeeper 4.DB provider构建 1.api构建 i ...
- 使用maven编译Java项目 http://www.tuicool.com/articles/YfIfIrq
使用maven编译Java项目 时间 2014-07-17 17:42:37 Way Lau's Blog 原文 http://www.waylau.com/build-java-project- ...
随机推荐
- linux bash shell 判断目录是否为空的函数
#!/bin/sh ##方法一 判断输出字符数统计为0 is_empty_dir(){ |wc -w` } ##方法二 判断输出string为空 #is_empty_dir(){ # ` ] #} t ...
- 深入__proto__和prototype的区别和联系
前话 有一个一个装逼的同事,写了一段代码 function a(){} a.__proto__.__proto__.__proto__ 然后问我,下面这个玩意a.__proto__.__proto__ ...
- java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy at sun.reflect.an ...
- test20181029 宝藏
题意 分析 考场做法 一眼看出是支持换根的树形dp. 用\(f(x,0/1)\)表示x及其子树中,从x出发,不一定/一定回到x的最大收益. 然后子树很好做. 换根的时候,我先计算后还原,需要考虑很多, ...
- test20181025 Color
题意 分析 自己的想法 可以莫队+平衡树. 对每个颜色维护一颗平衡树,然后移动莫队端点的时候在平衡树中查询. 区间加操作容易实现. 单点修改转化为平衡树的插入删除. 感谢Z前辈的指导. 时间复杂度\( ...
- 在css中使用hover来控制其他元素的样式,该两个元素必须是父子元素
.col-3:hover .check-box { display: block; } 在css中使用hover来控制其他元素的样式,该两个元素必须是父子元素!!!!
- Oracle Client 10g (instantclient) 精简版安装
今天遇到个软件要求安装oracle client端,于是考虑装精简版本的,就从http://www.oracle.com/technology/software/tech/oci/instantcli ...
- bzoj2957楼房重建
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2957 线段树.每个点记录斜率,要一个单增的序列长度(从1开始). 线段树每个点记录自己区间的 ...
- 黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误
解决办法:使用for循环,而不是foreach循环 例如: ArrayList akeys=new ArrayList(_transmit_tb.Keys); ;p> -;p--) { _tra ...
- [正经分析] DAG上dp两种做法的区别——拓扑序与SPFA
在下最近刷了几道DAG图上dp的题目. 要提到的第一道是NOIP原题<最优贸易>.这是一个缩点后带点权的DAG上dp,它同时规定了起点和终点. 第二道是洛谷上的NOI导刊题目<最长路 ...