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- ...
随机推荐
- specialized English for automation-Lesson 2 Basic Circuits of Operational Amplifiers
排版有点乱.... ========================================================================= Operational Ampl ...
- 在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作
在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作 MyEclipse6.5 , mysq驱动jar包为mysql-connector ...
- jQuery progression 表单进度
progression.js是一款表单输入完成进度插件.支持自定义提示框大小.方向.左边.动画效果.间距等,也支持是否显示进度条.字体大小.颜色.背景色等. 在线实例 实例演示 使用方法 <fo ...
- Ethereum以太网搭建本地开放环境简明教程
引言: 区块链技术的风起云涌预示着一个去中心化时代的来临,ethereum技术栈是目前业界最为应用广泛的基于区块链技术的技术方案,本文将记录如何基于本地环境来搭建私有区块链的开发环境. 部署私有区块链 ...
- 从U-Boot显示Logo到Android
/******************************************************************************* * 从U-Boot显示Logo到And ...
- 比较两个array或者object是否深度相等
function objectEquals(object1: Object, object2: Object): boolean { for (let propName in object1) { i ...
- Oracle 和 mysql 的批量操作Sql语句 的区别
正确的oracle批量新增的sql是: 方法 1: <insert id="insertAttractionsBatch" parameterType="java. ...
- Ext.js 之MVC
Ext.js 4.0之MVC
- test20181025 Color
题意 分析 自己的想法 可以莫队+平衡树. 对每个颜色维护一颗平衡树,然后移动莫队端点的时候在平衡树中查询. 区间加操作容易实现. 单点修改转化为平衡树的插入删除. 感谢Z前辈的指导. 时间复杂度\( ...
- System.IO.Path类
System.IO.Path为路径的操作封装了很多很有的东西,利用该类提供的方法能够快速处理路径操作的问题.下面详细了解一下. 1.属性 属性太复杂了,反映什么系统平台的信息,看不懂,等以后看得懂了再 ...