[toc]
0x00 前言简述
描述: Eclipse IDE编辑器 它是是由IBM公司开发的一款JAVA程序开发的软件(支持Windows、Mac、Linux),提供了开发的便利性,并且可以免费使用它, 当前版本 Eclipse IDE 2020-12 R;
官网下载: https://www.eclipse.org/downloads/ Eclipse IDE 2020-12 R(可选择Mirror下载):https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-12/R/eclipse-jee-2020-12-R-linux-gtk-x86_64.tar.gz
PS : 程序的编译和运行的环境配置(一般不改) 由于修改编译环境会导致不可置信
- 低版本JDK编译,高版本JDK运行。可以。
- 高编译,低运行。不可以。
- 建议,编译和运行的版本一致。
0x01 基础安装
环境依赖:JDK(Java) 操作系统:Windows|linux
Ubuntu 安装
描述: 在 Ubuntu-20.04-01-Server 下安装并使用 Eclipse, Windows 安装此处不多说; 安装环境:
代码语言:javascript复制root@weiyigeek-pc:~/Downloads# ls
eclipse-jee-2020-12-R-linux-gtk-x86_64.tar.gz jdk-8u211-linux-x64.tar.gz
root@weiyigeek-pc:~/Downloads# lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
root@weiyigeek-pc:~/Downloads# uname -r
5.4.0-59-generic
安装部署流程:
Step 1.分别上传 jdk 和 eclipse-jee 到服务器之中;
代码语言:javascript复制root@weiyigeek-pc:~/Downloads# ls
eclipse-jee-2020-12-R-linux-gtk-x86_64.tar.gz jdk-8u211-linux-x64.tar.gz
Step 2.Java 环境配置
代码语言:javascript复制# @java 环境设置
java::Env () {
# 基础变量
JAVA_FILE="/root/Downloads/jdk-8u211-linux-x64.tar.gz"
JAVA_SRC="/usr/local/"
JAVA_DIR="/usr/local/jdk"
# 环境配置
sudo tar -zxvf ${JAVA_FILE} -C ${JAVA_SRC}
sudo rm -rf /usr/local/jdk
JAVA_SRC=$(ls /usr/local/ | grep "jdk")
sudo ln -s ${JAVA_SRC} ${JAVA_DIR}
export PATH=${JAVA_DIR}/bin:${PATH}
sudo cp /etc/profile /etc/profile.$(date %Y%m%d-%H%M%S).bak
sudo tee -a /etc/profile <<'EOF'
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
EOF
java -version
}
Step 3.Eclipse 解压与软连接创建
代码语言:javascript复制# 解压软连接
tar -zxf eclipse-jee-2020-12-R-linux-gtk-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/eclipse/eclipse /usr/bin/eclipse
# 桌面图标
nano eclipse.desktop
[Desktop Entry]
Name=Eclipse
Comment=Eclipse-JEE
Exec=/usr/local/eclipse/eclipse
Icon=/usr/local/eclipse/icon.xpm
Type=Application
Terminal=false
StartupNotify=true
Encoding=UTF-8
sudo chmod 777 eclipse.desktop
# 启动测试
./eclipse
WeiyiGeek.Eclipse运行
0x02 简单使用
(1) Eclipse的视窗和视图介绍
代码语言:javascript复制视图是由某些视窗的组合而成的
* Java 视图
* Java EE 视图
* Debug 视图
视窗每一个基本的窗体被称为视窗
* PackageExplorer 显示项目结构,包,类,及资源
* Outline 显示类的结构,方便查找,识别,修改
* Console 程序运行的结果在该窗口显示
* Hierarchy 显示Java继承层次结构,选中类后F4
WeiyiGeek.Ubuntu中运行Eclipse界面
(2) Eclipse中快捷键的使用
描述:使用快捷键可以帮助我们提高开发效率最重要的是提高比格;
代码语言:javascript复制* 0:内容辅助键起提示作用 Alt /
* 1:显示类说明和隐藏类说 F2
* 2:显示类的类型层次结构 F4
* 3:自动生成构造方法与生成提供外部使用的公共方法
* A:新建(可以输入关键字选择) ctrl n
* B:格式化 ctrl shift f
* C:导入包 ctrl shift o
* D:注释(单行/多行) ctrl /,ctrl shift /,ctrl shift
* E:代码上下移动 选中代码alt 上/下箭头
* F:查看源码 选中类名(F3或者Ctrl 鼠标点击)
* G:查找具体的类 ctrl shift t
* H:查找具体类的具体方法(列表显示) ctrl o
* I:给建议根据右边生成左边的数据类型(生成方法) ctrl 1 (实用 将鼠标放在创建的方法名上)
* J:删除代码 ctrl d
* K:抽取方法 alt shift m
* L:改名 alt shift r
* M:隐藏除代码区的所有窗口 ctrl m
* O:向上或者向下复制一行 `ctrl alt [上键|下键]`
Eclipse快捷键大全(转载)
代码语言:javascript复制Ctrl 1 快速修复(最经典的快捷键,就不用多说了)
Ctrl D: 删除当前行
Ctrl Alt ↓ 复制当前行到下一行(复制增加)
Ctrl Alt ↑ 复制当前行到上一行(复制增加)
Alt ↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt ↑ 当前行和上面一行交互位置(同上)
Alt ← 前一个编辑的页面
Alt → 下一个编辑的页面(当然是针对上面那条来说了)
Alt Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift Ctrl Enter 在当前行插入空行(原理同上条)
Ctrl Q 定位到最后编辑的地方
Ctrl L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl M 最大化当前的Edit或View (再按则反之)
Ctrl / 注释当前行,再按则取消注释
Ctrl O 快速显示 OutLine
Ctrl T 快速显示当前类的继承结构
Ctrl W 关闭当前Editer
Ctrl K 参照选中的Word快速定位到下一个
Ctrl E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl /(小键盘) 折叠当前类中的所有代码
Ctrl ×(小键盘) 展开当前类中的所有代码
Ctrl Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt /来代替)
Ctrl Shift E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl J 正向增量查找(按下Ctrl J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl Shift J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl Shift F4 关闭所有打开的Editer
Ctrl Shift X 把当前选中的文本全部变为大写
Ctrl Shift Y 把当前选中的文本全部变为小写
Ctrl Shift F 格式化当前代码
Ctrl Shift P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)
# 下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt Shift开头的了)
Alt Shift R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt Shift M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt Shift C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt Shift L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候) - 实用
Alt Shift F 把Class中的local变量变为field变量 (比较实用的功能)
Alt Shift I 合并变量(可能这样说有点不妥Inline)
Alt Shift V 移动函数和变量(不怎么常用)
Alt Shift Z 重构的后悔药(Undo)|Try Catch快捷键 - 实用
# 编辑
作用域 功能 快捷键
全局 查找并替换 Ctrl F
文本编辑器 查找上一个 Ctrl Shift K
文本编辑器 查找下一个 Ctrl K
全局 撤销 Ctrl Z
全局 复制 Ctrl C
全局 恢复上一个选择 Alt Shift ↓
全局 剪切 Ctrl X
全局 快速修正 Ctrl1 1
全局 内容辅助 Alt /
全局 全部选中 Ctrl A
全局 删除 Delete
全局 上下文信息 Alt ?
Alt Shift ?
Ctrl Shift Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt Shift ↑
Java编辑器 选择上一个元素 Alt Shift ←
Java编辑器 选择下一个元素 Alt Shift →
文本编辑器 增量查找 Ctrl J
文本编辑器 增量逆向查找 Ctrl Shift J
全局 粘贴 Ctrl V
全局 重做 Ctrl Y
# 查看
# 作用域 功能 快捷键
全局 放大 Ctrl =
全局 缩小 Ctrl -
# 窗口
# 作用域 功能 快捷键
全局 激活编辑器 F12
全局 切换编辑器 Ctrl Shift W
全局 上一个编辑器 Ctrl Shift F6
全局 上一个视图 Ctrl Shift F7
全局 上一个透视图 Ctrl Shift F8
全局 下一个编辑器 Ctrl F6
全局 下一个视图 Ctrl F7
全局 下一个透视图 Ctrl F8
文本编辑器 显示标尺上下文菜单 Ctrl W
全局 显示视图菜单 Ctrl F10
全局 显示系统菜单 Alt -
# 导航
# 作用域 功能 快捷键
Java编辑器 打开结构 Ctrl F3
全局 打开类型 Ctrl Shift T
全局 打开类型层次结构 F4
全局 打开声明 F3
全局 打开外部javadoc Shift F2
全局 打开资源 Ctrl Shift R
全局 后退历史记录 Alt ←
全局 前进历史记录 Alt →
全局 上一个 Ctrl ,
全局 下一个 Ctrl .
Java编辑器 显示大纲 Ctrl O
全局 在层次结构中打开类型 Ctrl Shift H
全局 转至匹配的括号 Ctrl Shift P
全局 转至上一个编辑位置 Ctrl Q
Java编辑器 转至上一个成员 Ctrl Shift ↑
Java编辑器 转至下一个成员 Ctrl Shift ↓
文本编辑器 转至行 Ctrl L
# 搜索
# 作用域 功能 快捷键
全局 出现在文件中 Ctrl Shift U
全局 打开搜索对话框 Ctrl H
全局 工作区中的声明 Ctrl G
全局 工作区中的引用 Ctrl Shift G
# 文本编辑
# 作用域 功能 快捷键
文本编辑器 改写切换 Insert
文本编辑器 上滚行 Ctrl ↑
文本编辑器 下滚行 Ctrl ↓
# 文件
# 作用域 功能 快捷键
全局 保存 Ctrl S
全局 打印 Ctrl P
全局 关闭 Ctrl F4
全局 全部保存 Ctrl Shift S
全局 全部关闭 Ctrl Shift F4
全局 属性 Alt Enter
全局 新建 Ctrl N
# 项目
# 作用域 功能 快捷键
全局 全部构建 Ctrl B
# 源代码
# 作用域 功能 快捷键
Java编辑器 格式化 Ctrl Shift F
Java编辑器 取消注释 Ctrl
Java编辑器 注释 Ctrl /
Java编辑器 添加导入 Ctrl Shift M
Java编辑器 组织导入 Ctrl Shift O
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl 1自动修正。
# 运行
# 作用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift F5
全局 添加/去除断点 Ctrl Shift B
全局 显示 Ctrl D
全局 运行上次启动 Ctrl F11
全局 运行至行 Ctrl R
全局 执行 Ctrl U
# 重构
# 作用域 功能 快捷键
全局 撤销重构 Alt Shift Z
全局 抽取方法 Alt Shift M
全局 抽取局部变量 Alt Shift L
全局 内联 Alt Shift I
全局 移动 Alt Shift V
全局 重命名 Alt Shift R
全局 重做 Alt Shift Y
0x03 基本配置
1) IDE 编译和运行的环境配置
选择菜单栏:window -- Preferences -- Java
- 编译环境:Compile 默认选中的就是最高版本。
- 运行环境:Installed JREs默认会找你安装的那个JDK建议配置了Java的环境变量(也可以指定为您安装其他的JDK安装路径)。
WeiyiGeek.
2) IDE 设置注释
描述:我们可以设置注释也可以进行删除注释,选择你不想要的内容通过右边Edit编辑(请只删除注释部分,不是注释部分的不要删除)。
选择菜单栏:window -- Preferences -- Java -- Code Style -- Code Templates
WeiyiGeek.
3) IDE 样式窗格设置
A:行号的显示和隐藏
- 显示:在代码区域的最左边的空白区域,右键 – Show Line Numbers即可。
- 隐藏:把上面的动作再做一次。
B:字体大小及颜色
- a:Java代码区域的字体大小和颜色:
- window – Preferences – General – Appearance – Colors And Fonts –Java修改 – Java Edit Text Font
- b:控制台
- window – Preferences – General – Appearance – Colors And Fonts – Debug – Console font
- c:其他文件
- window – Preferences – General – Appearance – Colors And Fonts – Basic – Text Font
C:窗体给弄乱了,怎么办?
- window – Reset Perspective
D:控制台找不到了,怎么办?
- Window–Show View—Console
E:取消悬浮提示
- window – Preferences – Java–Editor–Hovers。右边将Combined Hover勾去掉。
- 这样代码的悬浮框就不会自动出现了。如果想看提示,将光标悬浮在代码上按F2即可。
WeiyiGeek.
4) 辅助键设置
描述:在Eclipse的IDE中常常会使用一些快捷大大的提高了我们的开发效率,
- 比如按键
alt /
功能是代码和内容补齐功能,非常的强大还可以自动导包;
定义自己的alt /快捷输入补齐:windows--perference-Java-Editor-Templates--New
#补充输出语句,选中需要输出的部分,alt /选择最后一项即可
Alt / #代码提示以及自动导包作用
#示例
main alt / #public static void main(String[] args)
syso alt / #System.out.println("")
还比如alt shit s [cor]
强大到可以建立空参构造以及有参构造
#使用方法:
在菜单栏source里面进行选择或者在代码区鼠标右键选择source里面进行选择;
Generate Constructors from Superclass
Generate Constructor using field
Generate gettter and setters
alt shit s [cor] #会根据您在类中声明的成员变量来
- c 生成空参构造
- o 生成有参构造
- r 生成get和set方法
基础示例:
代码语言:javascript复制class Person {
private String name;
private int age;
//source ->Generate Constructors from Superclass && 快捷键:alt shift s c
public Person() {
super();
}
//source ->Generate Constructor using field && 快捷键:alt shift s o
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
//source ->Generate gettter and setters&& 快捷键:alt shift s r
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
5) 编码格式设置
描述:在Window –> Preferences–> General–> Workspace下,面板Text file encoding 选择UTF-8格式
6) 注释快捷键
代码语言:javascript复制1.单行注释
添加注释:Ctrl / 或 Ctrl Shift c 在单行代码前添加//注释
取消注释:Ctrl / 或 Ctrl Shift c 在单行代码前取消//注释
2.多行注释
添加注释:Ctrl Shift / 为选中代码块添加注释
取消注释:Ctrl Shift 为选中代码块取消注释
0x04常用插件
(1) Lombok 插件
描述: Lombok 的插件可以帮助我们简化代码(比如set/get方法可以省略不写
),取而代之的是在 JavaBean 上标注的注解;
Lombok官方介绍:通过增加一些“处理程序”,可以让 Java 变得简洁、快速。
为啥要使用此插件?
答:在 Java 中要保证封装性
,需要将成员变量私有化,对外提供 set/get 方法来访问,虽然现在的 IDE,像 eclipse,IDEA都提供了快捷键,来生成 set/get 方法,但是在做项目的时候,一个 JavaBean 往往会有很多的成员变量,一个变量对应两个方法,如果有10几个成员变量,那么会对应20多个方法,也许还要去写构造器、equals 等方法,而且需要维护。这样一来会使代码变得非常冗余,这些显得很冗长也没有太多技术含量,一旦修改属性就容易出现忘记修改对应方法的失误。
Lombok安装方法 描述:官方下载lombok.jar,双击下载好的lombak.jar安装操作进行依赖安装;
- 1.点击
Speclify Location
选择 eclipse 的安装目录,然后点击Install / Update
,点击Quit Installer
完成安装 - 2.安装完成之后请确认eclipse安装路径下是否多了一个lombok.jar包,并且其配置文件eclipse.ini中是否添加了如下内容
-javaagent:D:Programseclipselombok.jar
,然后重启Eclipse后将lombok.jar导入项目即可; - 3.如过安装成功但是@Data等注解无效,可能是由于你的eclipse版本是新版本,你的lombok.jar版本太旧。那么请下载最新的lombok.jar再进行安装。
WeiyiGeek.Lombok
Lombok注解使用方法
PS:使用得时候需要进行导包,否则不能使用我得版本是Eclipse 2019/6
@Data 注解:为类的所有属性自动生成 setter/getter、equals、canEqual、hashCode、toString
方法,如为 final 属性则不会为该属性生成 setter 方法。
包含了 @ToString、@EqualsAndHashCode、@Getter/@Setter、@RequiredArgsConstructor
的所有特性
import lombok.Data;
@Data
public class Student {
private String name;
private Integer age;
public static void main(String[] args) {
Student d = new Student();
d.setName("WeiyiGeek");
d.setAge(15);
System.out.println(d.toString());
}
}
//#执行结果
Student(name=WeiyiGeek, age=15)
@Getter/@Setter 注解:指定属性自动生成 set/get 方法它不想@Date那么的粗暴
代码语言:javascript复制//#示例1.
import lombok.Setter;
public class Student {
@Setter private String name;
private Integer age;
private Integer id;
private String major;
public static void main(String[] args) {
Student stu = new Student();
stu.setName("Mr.ml");
}
}
//#示例2.
package top.weiyigeek.Lombok;
import lombok.Getter;
import lombok.Setter;
public class Demo2 {
@Setter @Getter private String Name;
@Setter private String Address;
public static void main(String[] args) {
Demo2 d2 = new Demo2();
d2.setName("Weiyigeek");
d2.setAddress("Beijing");
System.out.println(d2.getName()); //由于Address属性没加@Getter注释所以这里无法调用getAddress方法
System.out.println(d2.toString()); //由于没有重新toString方法
}
}
//执行结果:
Weiyigeek
top.weiyigeek.Lombok.Demo2@15db9742
-@NonNull 注解:用在属性或构造器上,Lombok 会生成一个非空的声明,可用于校验参数能帮助避免空指针。
代码语言:javascript复制
public class Student {
@Setter private String name;
public Student(@NonNull String name) {
this.name = name;
}
}
@Cleanup 注解: 能帮助我们自动调用 close() 方法很大的简化了代码。
代码语言:javascript复制//#示例1
public class CleanupExample {
public static void main(String[] args) throws IOException {
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
byte[] b = new byte[10000];
while (true) {
int r = in.read(b);
if (r == -1) break;
out.write(b, 0, r);
}
}
}
//#示例2
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import lombok.Cleanup;
public class Demo3 {
public static void main(String[] args) {
try {
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
byte[] b = new byte[1024];
while(true) {
int r = in.read(b);
if (r == -1) {
System.out.println("内容复制完成!");
break;
}
out.write(b, 0, r);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@EqualsAndHashCode 注解:默认情况下,会使用所有非静态(non-static)和非瞬态(non-transient)
属性来生成 equals 和 hashCode,也能通过 exclude注解来排除一些属性
@EqualsAndHashCode(exclude={"id", "shape"})
public class EqualsAndHashCodeExample {
private transient int transientVar = 10;
private String name;
private double score;
private Shape shape = new Square(5, 10);
private String[] tags;
private int id;
public String getName() {
return this.name;
}
@EqualsAndHashCode(callSuper=true)
public static class Square extends Shape {
private final int width, height;
public Square(int width, int height) {
this.width = width;
this.height = height;
}
}
}
@ToString 注解: 使用@ToString 注解,Lombok 会生成一个 toString() 方法,默认情况下,会输出类名、所有属性(会按照属性定义顺序)用逗号来分割。通过将 includeFieldNames 参数设为 true 就能明确的输出 toString() 属性。这一点是不是有点绕口通过代码来看会更清晰些。
代码语言:javascript复制@ToString(exclude="id")
public class ToStringExample {
private static final int STATIC_VAR = 10;
private String name;
private Shape shape = new Square(5, 10);
private String[] tags;
private int id;
public String getName() {
return this.getName();
}
@ToString(callSuper=true, includeFieldNames=true)
public static class Square extends Shape {
private final int width, height;
public Square(int width, int height) {
this.width = width;
this.height = height;
}
}
}
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor : 无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载。
代码语言:javascript复制@RequiredArgsConstructor(staticName = "of")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public class ConstructorExample<T> {
private int x, y;
@NonNull private T description;
@NoArgsConstructor
public static class NoArgsExample {
@NonNull private String field;
}
}
(2) git 插件
push项目到远程仓库并为项目打标签的操作流程:
- (1) 修改eclipse已配置git仓库的某一个文件,推送工作区、暂存区的代码到远程仓库;
WeiyiGeek.push 项目
PS : 如果选择Commit and push 就立即 上传到远程仓库中,而commit仅仅提交到本地仓库中;如果是一个稳定的版本又要为它打Tag的情况下可以选择Commit,只是减少一步重复提交的操作而已;
- (2) 创建Tags 点击
右键项目-> Team -> Advanced -> create Tag
,输入Tag 名称与Tag的信息备注, 然后Push tag 于此同时也将本地仓库的commit修改提交到了远程仓库, 之后点击完成即可;
WeiyiGeek.push tag
- (3) 在gitlab仓库中查看推送的Tag信息;
WeiyiGeek.show tags