IntelliJ IDEA常见问题解决办法汇总

 idea配置代码模板的地方【只用配置includes便可,不用配置Files tab下的内容】:
Editor-> File and Code Templates->Includes

php

 

This is a built-in template. It contains a code fragment that can be included into file templates (Templates tab) with the help of the #parse directive. 
The template is editable. Along with static text, code and comments, you can also use predefined variables that will then be expanded like macros into the corresponding values. 
Predefined variables will take the following values:
${PACKAGE_NAME}
 
name of the package in which the new file is created
${USER}
 
current user system login name
${DATE}
 
current system date
${TIME}
 
current system time
${YEAR}
 
current year
${MONTH}
 
current month
${MONTH_NAME_SHORT}
 
first 3 letters of the current month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL}
 
full name of the current month. Example: January, February, etc.
${DAY}
 
current day of the month
${DAY_NAME_SHORT}
 
first 3 letters of the current day name. Example: Mon, Tue, etc.
${DAY_NAME_FULL}
 
full name of the current day. Example: Monday, Tuesday, etc.
${HOUR}
 
current hour
${MINUTE}
 
current minute
${PROJECT_NAME}
 
the name of the current project
 Apache Velocity template language is used

 

 

 

 



 

 reformat时,import记录的转换。html

 

 

idea在单元测试中设置JVM参数
运行一次测试用例,而后在工具栏中点 Run/Debug旁边的向下的小箭头:java

选择Edit Configuration…git


能够看到 VM Options 参数设置,而且能够指定具体的方法


必定保存Apply,否则不会生效:


github

 

市场插件

  • 阿里代码规约检测web

  • 快捷键提示工具:Key promoter Xspring

  • 代码注解插件: Lombokapache

  • 代码生成工具:CodeMakerjson

  • 单元测试测试生成工具:JUnitGeneratorwindows

  • Mybatis 工具:Free Mybatis plugin 【可以让Mapper.java文件 关联到 mapper.xml中的方法】

  • Maven辅助神器:Maven Helper

  • JSON转领域对象工具:GsonFormat

  • 领域对象转JSON工具:POJO to JSON

  • 时序图生成工具:SequenceDiagram

  • 字符串工具:String Manipulation

  • 代码做色工具:Rainbow Brackets

  • RESTful 服务开发辅助工具集: RestfulToolkit

  • 日志工具:Grep Console

  • 生成对象set方法:GenerateAllSetter

  • Redis可视化:Iedis

  • K8s工具:Kubernetes

  • 中英文翻译工具:Translation

https://mp.weixin.qq.com/s/xNSES7n_oMU4I4rwftQHiA
IDEA插件介绍(一) -RestfulToolkit(接口自测工具)

1:官网
http://plugins.jetbrains.com/plugin/10292-restfultoolkit

2:工具介绍:
一套 RESTful 服务开发辅助工具集。

1.根据 URL 直接跳转到对应的方法定义 ( or Ctrl Alt N );
2.提供了一个 Services tree 的显示窗口;
3.一个简单的 http 请求工具;
4.在请求方法上添加了有用功能: 复制生成 URL;,复制方法参数...
5.其余功能: java 类上添加 Convert to JSON 功能,格式化 json 数据 ( Windows: Ctrl + Enter; Mac: Command + Enter )。
3:背景介绍:
由于咱们公司开发模式为先后端分离,因此对接口文档要求较为苛刻,有时因开发任务多,接口文档没法及时提供,须要双方频繁沟通确认,为了解决这种现状,给你们安利一款插件,插件名为RestfulToolkit,能有效解决在无接口文档时,双方的联调工做。

4:安装
 

ctrl +alt +s  →settings
plugins →browse repositories
搜索框输入:RestfulToolkit →Install
安装完成后重启IDEA
下面为图示:

安装完成后就是上面的样子。安装失败的请升级IDEA至18及以上版本。

功能演示:
安装后,右侧会有RestServices侧边栏,点击后会显示当前项目全部请求地址,能够进行输入查询,而后会直接把请求方式,地址以及参数列出来,默认请求服务器为本机(localhost:8080),可根据需求更改。

全局快捷搜索:Ctrl  \ 

同类工具对比的优缺点:
优势:

其余工具如:postman,DHC,jmeter等,此工具直接集成与项目,不须要输入地址以及多个参数,便能直接访问。

缺点:

没法保存,每次使用参数都须要从新赋值,且没有请求记录。

总结:
此工具适合作接口测试,以及敏捷开发时使用,真证先后端分离式开发,还须要写好接口文档
---------------------
做者:想要这个昵称
来源:CSDN
原文:https://blog.csdn.net/qq_22741461/article/details/81625079
版权声明:本文为博主原创文章,转载请附上博文连接!

 

Idea 中解决maven 包冲突的问题(maven helper)

    • 首先安装插件 maven helper(由于我已经安装了,因此没 install 的按钮了) 

       

    • 安装完成后,在 pom 文件下方会出现这个东西 

       

    • 点进去你会发现仿佛回到了 eclipse 

    • 接下来到重点了,选中冲突选项 conflicts,这一列都是存在冲突的包 

       

    • 以fastjson 为例 

      固然咱们调错误的时候也能够直接搜索有问题的包,以下 

       

    • 选中右键就能够 Exclude 啦,想用1.2.28就把其余版本的Exclude掉,想用1.2.3就把其余版本的Exclude掉,是否是很方便。 

       

https://www.cnblogs.com/a8457013/p/9108698.html






Install plugin from disk:
COMPATIBLE BUILDS 号匹配的问题,若是不匹配,plugin就不能安装成功:
网页上每一个plugin Build版本:


IDE上的版本号:

 在窗口的右上角小齿轮中取消勾选 复选框“Compact Empty Middle Packages”,Package路径就会如下图的形式展现。好处:能够更改任一层目录的文件夹名

 

右键菜单中勾选了“Compact Empty Middle Packages”,则只能rename最外层的packsge名字:


右键菜单中,去掉“Compact Empty Middle Packages”,则能够rename任一层package名字

https://blog.csdn.net/lv_fq/article/details/51874181

 

Error:java: javacTask: source release 8 requires target release 1.8

 

解决办法:
Settings【ctrl+alt+s】没有shift键--》

Build,Execution,Deployment-->Compiler-->Java Compiler
在打开的界面中,将Project bytecode version改为指望的jdk版本,
若是须要把Per-module bytecode version下每一个模块的Target bytecode version按需进行更改

 

 

必备材料介绍

Project 和 Module 介绍

这两个概念是 IntelliJ IDEA 的必懂知识点之一,请务必要学会。

如 果你是 Eclipse 用户,而且已经看了上面给的连接,那 IntelliJ IDEA 首先告诉你一个很是重要的事情:IntelliJ IDEA 没有相似 Eclipse 工做空间(workspace)的概念的。不少从 Eclipse 转过来的人老是下意识地要再同一个窗口管理 n 个项目,这在 IntelliJ IDEA 是没法获得。IntelliJ IDEA 提供的体验是:一个 Project 打开一个 Window 窗口。

对于 Project,IntelliJ IDEA 是这样解释的:

  • Whatever you do in IntelliJ IDEA, you do that in the context of a project. A project is an organizational unit that represents a complete software solution. It serves as a basis for coding assistance, bulk refactoring, coding style consistency, etc.
  • Your finished product may be decomposed into a series of discrete, isolated modules, but it's a project definition that brings them together and ties them into a greater whole.
  • Projects don't themselves contain development artifacts such as source code, build scripts, or documentation. They are the highest level of organization in the IDE, and they define project-wide settings as well as collections of what IntelliJ IDEA refers to as modules and libraries.
  • 连接地址:https://www.jetbrains.com/idea/help/project.html

对于 Module,IntelliJ IDEA 是这样解释的:

  • A module is a discrete unit of functionality which you can compile, run, test and debug independently.
  • Modules contain everything that is required for their specific tasks: source code, build scripts, unit tests, deployment descriptors, and documentation. However, modules exist and are functional only in the context of a project.
  • Configuration information for a module is stored in a .iml module file. By default, such a file is located in the module's content root folder.
  • Development teams, normally, share the .iml module files through version control.
  • 连接地址:https://www.jetbrains.com/idea/help/module.html

通 过上面的介绍咱们知道,在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 能够有多个 Module。目前主流的大型项目结构都是相似这种多 Module 结构,这类项目通常是这样划分的,好比:core Module、web Module、plugin Module、solr Module 等等,模块之间彼此能够相互依赖。经过这些 Module 的命名也能够看出,他们之间应该都是处于同一个项目业务状况下的模块,彼此之间是有不可分割的业务关系的。

因此咱们如今总结:一个 Project 是由一个或多个 Module 组成,模块之间尽可能是处在同一个项目业务的的状况下,彼此之间互相依赖关联。这里用的是 尽可能,由于 IntelliJ IDEA 的 Project 是一个没有具有任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范等类型的效果,也许咱们能够简单地理解为就是一个单纯的目录,只是这个目录命名上必须有其表明性的意义。

下面咱们以著名的 spring-framework 项目为例介绍多 Module 的结构的:

  • 项目主页:https://github.com/spring-projects/spring-framework
  • 该项目的 Project 命名是:spring-framework。该目录主要做用为各个 Module 的顶层目录进行约束,告诉协同者,这个目录下都是 spring-framework 相关的,我毫不对放 Android 相关源码、文档、文件在上面的。该目录并非以一个实际性的目录来提现的,因此你访问主页是看不到的,可是当你 checkout 的时候,你必须为这个项目命名,至于命名默认就是 spring-framework
  • 该 Project 下有二十来个 Module,各个 Module 的命名也是有含义的,好比:spring-corespring-jdbcspring-jmsspring-ormspring-webspring-webmvc 等等,咱们经过这些命名也能清楚地知道他们要表达的含义,这些 Module 下也都各自有 src 编码目录,能够自行编码和构建。

  • 相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,而且 IntelliJ IDEA 建立项目的时候,默认就是单 Module 的结构的。
  • 如上图 Gif 图演示,在输入 Project name 的时候,Module name 和 Module file Location 自动进行改变,同时 Project location 和 Module file Location 彻底同样,这也就表示,Project 目录和 Module 目录是同一个,因此此时 Project 目录下就会有 src 目录,可是咱们应该明白其本质仍是 Module 的目录。

关于 IntelliJ IDEA 的 Project 和 Module 终于解释清楚了,可是因为 IntelliJ IDEA 官网上又有一段话对此解释得不够好,特别是对 Eclipse 用户来说:https://www.jetbrains.com/idea/help/eclipse-faq.html,其中有这样两句话:

  • An Eclipse workspace is similar to a project in IntelliJ IDEA
  • An Eclipse project maps to a module in IntelliJ IDEA

你能够把 IntelliJ IDEA 的 Project 当作 workspace 使用,IntelliJ IDEA 也是支持的,可是就像咱们前面解释的那么那么多,这样是很是不符合其初衷的,因此请别把这段话当作教义去学习。对此 zeroturnaround 的大牛也有针对此进行了说明:http://zeroturnaround.com/rebellabs/getting-started-with-intellij-idea-as-an-eclipse-user/3/

http://blog.csdn.net/ichsonx/article/details/48831277

 

 

(1)SVN相关的操做:

启用:
方法1:VCS菜单下Enable Version Control Integration,点击以后选择相应的版本控制工具
方法2:Setting中Version Control 中右边的 +  - none 均可以操做。

关闭:
相似开启中的方法2

 

(2)IntelliJ IDEA如何进行单元测试和代码覆盖率
http://jingyan.baidu.com/article/9faa72315be0ef473d28cb64.html

(3)解决中文乱码问题其实很简单。

按如下步骤设置,就能够顺利解决。

1、进入设置页。File-->Settings (快捷键:Ctrl+Alt+S)
2、进入IDE Settings,在File Encoding 中 的 Default encoding 改成 GB2312。
3、肯定后,从新编译代码便可正常输出中文

http://blog.csdn.net/angelhacker/article/details/6581577

 

 (4)Show line numbers

 

IntelliJ IDEA打Jar

1.菜单:File->project stucture...(也能够按快捷键ctrl+alt+shift+s)
2.在弹窗最左侧选中Artifacts->左数第二个区域点击"+",选择jar,而后选择from modules with dependencies,而后会有配置窗口出现,配置完成后,勾选Build On mak (make 项目的时候会自动输出jar)->保存设置
3.而后菜单:Build->make project
4.最后在项目目录下去找输出的jar包(路径在你添加Artifacts的时候设置的路径,默认是%project%\out\artifacts\projectname_jar\)

若是你的程序不是web,也不是窗体,而是命令行的服务端,发现运行jar发现没有反应,但在进程里有javaw.exe,解决办法是在这个jar文件所在目录新建一个文本文件,内容以下:

@echo off
java -jar SocketServer.jar

而后将这个文件保存为xxxx.bat,之后要运行项目就直接运行这个bat批处理文件。


debug,查看运行时表达式运算结果的short-cut key:


使用工具栏上的VCS更新时,Update Project 选择”Merge"(平时执行的git pull = git fetch + git merge),Clean working tree before update 选择“Using Stash"(有问题能够直接在git bash中操做)

 

执行Ctrl+T命令,选择上面截图中的 “Merge”后,实际执行的git命令:

 

若是没有更新,则只执行fetch操做

 

 


git fetch:将远程服务器的数据更新到本地的

git pull看起来像git fetch+get merge,可是根据commit ID来看的话,他们实际的实现原理是不同的。
这里借用以前文献看到的一句话:
不要用git pull,用git fetch和git merge代替它。
git pull的问题是它把过程的细节都隐藏了起来,以致于你不用去了解git中各类类型分支的区别和使用方法。固然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你。
将下载(fetch)和合并(merge)放到一个命令里的另一个弊端是,你的本地工做目录在未经确认的状况下就会被远程分支更新。固然,除非你关闭全部的安全选项,不然git pull在你本地工做目录还不至于形成不可挽回的损失,但不少时候咱们宁愿作的慢一些,也不肯意返工重来

https://blog.csdn.net/weixin_41975655/article/details/82887273

 

 

 

 https://www.jetbrains.com/help/idea/2016.3/update-project-dialog-git.html

Rest Client
Intellij IDEA 里面内置了一个 Rest Client,你们能够经过Mac/windows: Command + Shift + a / ctrl+shift+a,而后搜索 Rest Client 来找到"REST Client",而后双击,便可打开

   

 

REST Client其实是Idea的一个plugin


http://www.cnblogs.com/jeffen/p/6169862.html

IDEA 查看UML的快捷键:

Ctrl + Alt + Shift + U



IntelliJ IDEA文件头注释模板
设置路径:
File-Other Settings-Default Settings-Editor-File and Code Templates-Includes-File Header

设置File Header:

/**
 * @author : tang.cheng
 * Project Name : ${PROJECT_NAME}
 * Description :
 * @version : ${VERSION} ${DATE} ${TIME}
 * Modified by :
 */

 

/**
 * ${PROJECT_NAME}
 * @author : tang.cheng@xiaoyi.com
 * @version : ${YEAR}-${MONTH}-${DAY}  ${TIME}
 *
 */

 

一、经常使用Java注释标签(Java comment tags)
@author 做者适用范围:文件、类、方法
(*多个做者使用多个@author标签标识,java doc中显示按输入时间顺序罗列。)
例:* @author Leo. Yao

@param 输入参数的名称 说明 适用范围:方法
例:* @param str the String用来存放输出信息。

@return 输出参数说明适用范围:方法
例: * @return <code>true</code>执行成功;
* <code>false</code>执行失败.

@since JDK版本用于标识编译该文件所须要的JDK环境。
适用范围:文件、类
例: * @since JDK1.6

@version 版本号用于标识注释对象的版本号
适用范围:文件、类、方法
例: * @version 1.0

@see 连接目标表示参考。会在java 文档中生成一个超连接,连接到参考的类容。
用法:
@see #field
@see #Constructor(Type, Type...)
@see #Constructor(Type id, Type id...)
@see #method(Type, Type,...)
@see #method(Type id, Type, id...)
@see Class
@see Class#field
@see Class#Constructor(Type, Type...)
@see Class#Constructor(Type id, Type id)
@see Class#method(Type, Type,...)
@see Class#method(Type id, Type id,...)
@see package.Class
@see package.Class#field
@see package.Class#Constructor(Type, Type...)
@see package.Class#Constructor(Type id, Type id)
@see package.Class#method(Type, Type,...)
@see package.Class#method(Type id, Type, id)
@see package

@throws 异常标识出方法可能抛出的异常
适用范围:方法
例: * @throws IOException If an input or output exception occurred

@deprecated 解释标识对象过时
适用范围:文件、类、方法

@link 连接地址连接到一个目标,用法相似@see。但常放在注释的解释中形如{@link …}
例:
/**
* @deprecated As of JDK 1.1, replaced by
* {@link #setBounds(int,int,int,int)}
*/
二、Java注释的使用顺序* @author (classes and interfaces only, required)
* @version (classes and interfaces only, required. See footnote 1)
* @param (methods and constructors only)
* @return (methods only)
* @exception (@throws is a synonym added in Javadoc 1.2)
* @see
* @since
* @serial (or @serialField or @serialData)
* @deprecated (see How and When To Deprecate APIs)

http://blog.csdn.net/tmj2014/article/details/12622241

 

Tomcat部署时war和war exploded区别

ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文
war模式:发布模式,这是先打成war包,再部署 ; 【部署后的ServletContext是Servlet容器所在的目录,譬如Tomcat】
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器【部署后的ServletContext是开发源代码所在的目录】; 

在使用IDEA开发项目的时候,部署Tomcat的时候一般会出现下边的状况:

(1)war模式这种能够称之为是发布模式,看名字也知道,这是先打成war包,再发布;
(2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。所以这种方式支持热部署,通常在开发的时候也是用这种方式。

(3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才能够及时的显示出来。

修改箭头指向的位置,这样的话就能够实现热部署:

使用war模式开发的时候遇到的坑
1、项目代码的位置以下:

3、用于获取上下文环境绝对路径的代码:

String contextPath = request.getSession().getServletContext().getRealPath("/");

4、两种方式的实验过程和结果:
(1)在使用war模式开发的时候,经过下边这段代码获取项目的相对路径:

其中C:\Software\apache-tomcat-8.0.32 是我Tomcat的所在位置。
能够看出经过war模式是最终打包部署到Tomcat的位置


(2)而后再看war exploded模式,一样进行设置,运行同一段代码,运行结果以下:

能够看出最终获得的是我这个项目的位置,其实就是这个项目target的位置。
https://blog.csdn.net/xlgen157387/article/details/56498938

实现Idea中修改jsp后热部署

问题:修改JS或者是JSP页面后,并无生效,每次修改都须要重启一次Tomcat
解决办法:
step1:Deployment标签页中,new Artifact时选择 war exploded 。并检查右边的“Application context”设置与预期是否一致
step2:Server标签页中,
将 On 'Update' action中选择“Update classes and resources” ; 
将On frame deactivation中选择"Update classes and resources"

On 'update' action或On frame deactivation中没有 “Update classes and resources” ,是由于已经使用war【发布模式】进行Deploy过了。
解决办法:
step1:把war方式生成的Artifact删除
step2:使用 war exploded方式从新new一个Artifact

须要在Tomcat的设置中为:


on ‘update‘ action:当用户主动执行更新的时候更新    快捷键:Ctrl + F9
on frame deactication:在编辑窗口失去焦点的时候更新
你能够根据本身的需求进行设置,我这里两个都有设置。

问题2:若是你的工程中没有 Update classes and resources 这个选项

在这种状况下你更新后只能更新classes文件中的变更,并不能更新静态文件中的变更。

缘由:在Deployment的选项中使用的是先将工程打成war包而后再去运行的



修改方式:
先remove当前工程,再次添加,添加的时候选择Artifact

而后选择工程名称后面有 exploded的选项

注意:
选择后记的填写Application context
而后在Server中更改成:Update classes and resources

http://www.cnblogs.com/hhhd/p/6640875.html

 

在Intellij 中对分支打tag操做。

为何要打tag?
tag中文的意思是标签的意思,生活中的标签有不少,好比产品的合格标签,赠品标签。
而在开发过程当中,可能会有这样的问题出现,1 一个版本开发结束后,进行分支合并,在master上进行测试 上线,上线后发现有问题须要急需退回到上一个版本,这就要求咱们本身手动在服务器上备份不少的war或者备份不少的文件夹。2 若是通常的修改在没有拉取新分支,而是在master上直接修改的话,修改后上线有问题,能够及时的拉取退回。3 若是在发版的时候忘记了备份war或者备份文件夹,及时代码进行回滚,代码回滚会形成一部分提交无效。因此,打tag很必要。

git tag和git branches区别?
查知乎上说,tag就像里程碑标志的一个点,branch是一个新的征程的一条线;tag 是静态的,而branch要往前走;稳定版本备份用tag,新功能开发多人用branch,开发完以后再merge到master上。
tag是一个只读的branch。

打tag git命令

$ git tag  //列出git中现有的全部标签
$ git tag -l v1.4.2.*  //按照字母表顺序给出tag
v1.4.2.1
v1.4.2.2

$ git tag -a v1.4 -m ‘version 1.4//建立标签, -a 加标签,-m  加标签注释。
$ git tag v1.4-lw                         //建立轻量级标签,不用-a,-m等参数

$ git show v1.4   //git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象

$ git tag -a v1.2 9fceb02        //为已提交的信息贴上标签,为校验码为9fceb02*的版本贴上标签。

$ git push --tags  //若是上传到服务器时不能上传tag,可加上--tags命令。\

Intellij中打tag

官方说明: https://www.jetbrains.com/help/idea/2016.1/working-with-tags-and-branches.html
tag and branch: https://www.jetbrains.com/help/idea/2016.1/working-with-tags-and-branches.html

步骤:
一、You can create a tag in VCS -> Git -> Tag... menu. (打开VCS中的git --Tag 菜单)

commit 窗口:若是不填写默认是最新的head代码.
能够填写一个version的校验码:

2 Then open the push dialog with VCS -> Git -> Push and activate the checkbox "Push Tags".
在点击create tag 以后, git push (或者ctrl+shif +k键)

选择push tags , 能够push 当前分支的tag , 也能够选择push 所有分支的tag。

怎样拉取tag的代码
checkout tag or revision,来检出代码。

https://www.jetbrains.com/help/idea/2016.1/working-with-tags-and-branches.html

相关文章
相关标签/搜索