Idea使用技巧

标签: Idea 分类: Java 创建时间:2019-10-10 08:13:01 更新时间:2025-01-17 10:39:22

1.新建普通java程序

新建->New->Project->Java->选择jdk->勾选 Create from archetype,选择Java Hello World->填写工程名->一路Next就好了。

2.新建Maven项目

(1) 新建->New->Project->maven->勾选 Create from archetype->选择:maven-archetype-quickstart -> 该填的填,改写的写,一路next就好了。依赖解决之后,maven会自动生成src/main文件夹和src/test文件夹以及Main函数,不需要的话,可以删除,自己新建。

(2) 新建 src/main文件夹,然后右键main文件夹:Make Directory As->Sources Root,在main文件夹下右键新建Main类,一个java工程就建好了。

1
2
3
4
5
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

(3) 在Main类上右键选择Debug就可以用Debug模式运行了,这样运行后会自动生成Debug配置,不要右上角手动添加了(当然你要手动添加的,好像也找不到要添加的类别)

(4) 如果要自己手动添加debug配置的化,可以选择增加 Application 这一项作为debug的配置。

(5) 创建打包程序

问题

(1) 本地配置的jar无法生效
我使用本地的 lib 目录进行引用,总是出现找不到类的问题。

1
2
3
4
5
6
7
<dependency>
<groupId>com.esri.arcgis</groupId>
<artifactId>arcobjects</artifactId>
<version>10.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/arcobjects.jar</systemPath>
</dependency>

甚至我使用了;mvn install:install-file 命令安装了依赖,还是不行,总是去远程仓库找文件,真是蛋疼。

【解决方案】
本地仓库有对应的jar包,此时还是报找不到对应的包,原因是maven3.x版本在从远程仓库下载资源后,会生成对应的_remote.repositories文件,标示该资源的来源,如果本地仓库有这个文件_remote.repositories,那就不会访问本地仓库,必须远程上有才行,否则就会报错。

下面是 .bat 文件

1
2
3
4
5
6
@echo off
for %%i in (d) do (
echo 正在搜索%%i盘 请稍后...
cd /d %%i:\
del /s /q _remote.repositories
)

还有时候就是特别的奇怪,idea中就是死活不行,无法识别,多修改几次,刷新几次又莫名其名的好了。

参考文章:
1.使用Maven管理项目时,本地仓库有对应的jar包,但还是报找不到
2.idea build 找不到包maven install 成功
3.maven idea设置查找依赖优先从指定的本地仓库获取 选择Setting>Build,Execution,Deployment>Build Tools >Maven>Runner,设置Maven启动虚拟机的选项:VMOption,设置所有资源先从本地仓库查找,如果本地仓库中没有才去互联网找。这个方法我尝试了,似乎没有用。

(2) class-path
如果需要将 lib 打包到文件夹之外,需要配置 manifestEntrie,这样在生成的 MANIFEST.MF 文件的 Class-Path 就会出现 C:/Program Files (x86)/ArcGIS/Desktop10.2 这个路径了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>Application</mainClass>
</manifest>
<manifestEntries>
<Class-Path>C:/Program Files (x86)/ArcGIS/Desktop10.2/java/lib/arcobjects.jar lib/jts-core-1.15.0.jar lib/gt-geojson-20.5.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>

3.修改Maven项目的仓库地址

打开File->setting,找到Maven设置

可以看到这里默认的使用的是Idea自带的Maven,而不是你自己安装maven,而且,仓库地址也是C:\Users\用户名.m2中的,所以即使你安装了maven,并且改掉了仓库的默认地址,好像在Idea中也不起作用,主要就是这个原因。可以将自己的Maven配置settings.xml,拷贝到.m2这个目录下。这样不用每个新建的项目都要修改这个配置文件的路径了。

第二种就是:file >> other settings >> setting for new project… >> build,execution,deployment >> build tools >> maven,这就永久修改了设置。

4.工作空间

5.无法启动debug

打开idea file-settings搜索插件找到Groovy,将其禁用。

6.找不到程序包

编写着代码,就出现了奇怪的问题,找不到主类或者包,但是明明就在那里啊,但是还是无法debug。重新打开工程,然后删除.idea文件夹,然后执行了File->Invalidate Caches/Restart也不行。
最后解决方案:执行了一遍,mvn clean 就可以了。

7.自动同步sftp

(1) Tools->Deploys->Configuration->添加Sftp->配置服务器地址和端口->配置Mappings映射->右键文件上传。

(2) 可以配置多个sftp服务,选择一个作为默认的sftp服务,选择自动上传的时候,就可以进行上传到默认的节点上了。如果测试没有问题了话,就可以手动上传到指定的sftp服务器上了。

8.新建模块

在使用 File->New 创建模块的时候总是出现奇怪的问题,无论怎么新建和删除都不行,结果出现了一个模块的根目录是另一个模块的文件,不能重复添加的错误。

只需要找到File->Project Structure->Modules,找到相应的模块,将不属于此模块的文件夹删除掉即可,这里databases模块中,有模块gateway的文件夹,这里删掉就好了(我已经删掉了)。如果这里不行,那就找到根模块,然后把根模块里面相应的文件夹删掉。

将一个文件夹作为idea的模块进行管理,也是如此,选择相应的文件夹,添加入模块管理即可。

新建springboot模块的步骤
(1) File-> New -> Moudle -> 选择SpringBoot

(2) 填入模块名称

(3) 创建之后,是一个空的目录,只有src目录,src目录下什么都没有。

(5) 在模块下添加pom.xml文件,在idea右侧的Maven面板中,点击加号,添加maven管理,然后选择新建的pom.xml文件,然后刷新maven

(4) 创建启动类,将src/main/java通过右键设置为源码目录,然后创建Application启动类

(5) 新建和resoruces文件夹,在文件夹下创建application.yml,然后右键resoucecs,将文件夹 Make Directory As -> Resources 文件夹

(6) 删除模块,右键点击Remove Module,然后再右键选择Delete

这样一个springboot模块就创建好了(说实话,还挺折腾的,我试了好多遍都不成功,最后才总结出了这个方法,刚开始新建模块,选择Maven模块,然后各种不能启动,创建了各种文件夹,自己还要一个一个的删除)。

注意
如果模块的名字和文件夹的名字不相同,在文件夹的后面就会有一个方括号显示模块的名字,这个时候,可以右键文件夹,选择重命名,可以重命名文件夹,然后在项目的 File->Project Structure->Modules 中修改模块的名字。

9.找不到主类

启动springboot项目时,发现找不到主类,可是明明就有主类啊。

【方法尝试】
我尝试了很多的方法,无论是重启,还是重新导入模块,似乎都无法解决这个问题。
(1) 菜单—》File—》Invalidate Caches/Restart 选择Invalidate and Restart 或者 只是Invalidate,清除掉缓存,然后菜单栏Build->Rebuild Project,这一步我没成功,还是无法找到主类,然后我执行了第二步。

(2) 进入到模块中,然后运行mvn clean package ,最后项目虽然报错,但是没有再显示找不到主类了。

(3) 我尝试将全部的模块都删除,然后重新添加,最后还是不行。

(4) 我尝试把maven重新导入,但是没有效果。无论我怎么添加,删除和修改这个模块。file–>project structure–>Module 直接删了,重新添加项目,都是没有效果的。

(5) 在项目的PATH 中,将path修改为跟当前项目在一个路径下。

所有的方法我基本上都试过了,结果还是不行。如果说所有的工程都是不行,那也就算了,只是其他的项目都可以,但是就是这个 jeecg-boot 项目不行。

(6) 终极尝试,那就是把本地项目保存一份,然后重新拉取代码,将代码进行覆盖操作,但是在覆盖到了 dev 的情况下,貌似出现了新的问题。我刚开始的时候重新下载了 jeecg-boot 代码,然后切换了分支,创建了新的分支,然后进行了代码替换,结果又出现了

1
2
错误: 找不到或无法加载主类 org.jeecg.JeecgSystemApplication
原因: java.lang.ClassNotFoundException: org.jeecg.JeecgSystemApplication

(7) 我不敢直接替换文件了,我才用了能用复制的形式,就用复制的形式:
1.重新拉取代码,没有问题,可以启动。
2.创建分支,不增加代码,可以启动。
3.修改配置文件,没有问题,可以启动。
4.增加disasterapi的文件夹,并将其导入为 modules,可以启动。
5.修改 jeecg-system-start 模块的 pom.xml,引入 disasterapi 模块,然后点击IDEA的maven面板进行刷新,再次启动结果报错了。

1
2
3
4
5
6
 <!--添加disasterapi模块-->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>disasterapi</artifactId>
<version>${jeecgboot.version}</version>
</dependency>

也就是说,我引入自定义的 disasterapi 导致了整个问题的发生。

6.当我再次删除这个 模块 的时候,结果也还是出现问题了。也就是说,一旦出现了这个错误,你无论是使用git log还原,还是使用 idea 删除缓存,还是切换jdk 版本,还是删除模块,最终都是无法消除这个错误的。

【解决方案】
我也不知道是不是解决了问题,我把原先的项目的父级目录的中文字段,改为了英文字段,这才没有出现错误了。但是真的很奇怪啊,在mac上同样是中文,就没有问题,但是到了windows上的中文就有问题,而且同一个路径下的其他的工程,中文文件夹就没有问题,偏偏就这一个工程有问题。我把原先的有问题的工程重新打开,自从换了中文路径之后,再也没有问题了。我真是吐血了,已经弄了一天的问题,就这么解决了,我是该高兴呢?还是悲伤呢?

参考文章:
1.IDEA 错误:找不到或无法加载主类
2.IDEA启动项目:找不到或无法加载主类 (只有这个还有点意思,其他的文章都不行)
3.使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析
4.解决java命令错误: 找不到或无法加载主类
5.IDEA找不到或无法加载主类 1.菜单栏Build->Rebuild Prodject。2.菜单栏File->Invalidate Caches->Invalidate and Restart。3.选择Modules,点击减号将所有的Moudle删除,点击+号重新引入Moudle。
6.IDEA报错:找不到或无法加载主类
7.IDEA中启动报错:找不到或无法加载主类 因为知道是改过模块名无法启动的,所以猜测是因此导致编译有问题,所以尝试重新rebuild,使用Build→Rebuild Project。使用File→Invalidate Caches/Restart…,选择Invalidate,清除一下缓存。使用File→Project Structure,左侧选择Modules,点击减号移除有问题的模块,再点击加号重新导入该模块。
8.IDEA/jeecg-boot找不到或无法加载主类 org.jeecg.JeecgApplication 1.删除编译文件,重新运行run.2.File–>invalidate Cache/restart,在弹出框点击invalidate and restart,IDEA重启.3.File–>project structure–>Module 直接删了,重新添加项目
9.IDEA 错误:找不到或无法加载主类 1.菜单—》Build—》Rebuild Prodject。2.菜单—》File—》Invalidate Caches/Restart 选择Invalidate and Restart 或者 只是Invalidate,清除掉缓存,然后Rebuild Project。3.菜单—》File—》Project Structure,删除添加modules。
10.IDEA错误:找不到或无法加载主类 看看是不是选择了Use module compile output path,然后路径是不是写得有问题。选择Inherit project compile output path试试看。

10.JRebel破解

Rebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效。IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费时间浪费生命。之前我看到了另外的激活方法,不过现在已经失效了,idea激活教程之jrebel激活 xrebel激活,这里有激活教程。链接打不开可以使用链接 密码: qp5t,里面有我下载的安装教程和Jrebel激活服务器。激活方法也很简单,就是安装Jrebel插件,重启Idea,然后打开Jrebel设置界面(在setting界面中),输入激活服务器地址和邮箱就可以了。

现在使用的是下面的方法:
(1) 生成{GUID}

(2) 打开菜单栏help->register->JRebel->Activation,填入服务器地址 https://jrebel.qekang.com/{GUID},和自己的邮箱。

参考文章:
1.JRebel 破解最简单的使用 (生成GUID,然后配置JRebel服务器)
2.Jrebel 热部署破解方法,长期有效 (和上面的一样)

11.java.io.FileNotFoundException

在启动的时候,总是报这个错误:java.io.FileNotFoundException: class path resource [com/ruoyi/common/core/controller/BaseController.class] cannot be opened because it does not exist,这是食用的若依的管理框架。

【解决】
File->清空缓存->重启

12.Maven中的 profile 的activation不生效

我在使用了 -Pprod之后,idea中使用会使用我当前激活的环境,而不是dev环境了。
【解决方案】
(1)在debug的时候,可以直接指定dev,配置debug面板。

(2)在使用test类的时候,可以直接使用 @ActiveProfiles(“dev”) 指定需要激活的 profile。

参考文章:
1.【IDEA】Maven踩坑:pom文件中的默认profiles不生效+IDEA中Maven的profiles使用说明
2.Maven 激活profile的几种方式 需要注意的是,如果 pom 中有任何一个 profile 通过其他方式被激活的话,所有配置成默认激活的 profile 都会自动失效。

13.OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes

14.转为maven工程

参考文章:
1.IntelliJ IDEA 普通java工程如何转为maven工程
2.IDEA中的maven工程Java未被识别的解决方法 如果已经导入了maven的项目工程,就点击刷新一下,如果没有,这要按+号导入项目的pom.xml文件

15.将普通java工程进行项目打包为jar

我用idea创建了一个普通的java工程,没有maven,也不是springboot,就是一个含有 main 的java工程,如何打包成一个可执行的java 呢?

问题

(1) Invalid signature file digest for Manifest main attributes
解释:“Some of your dependency JARs is a signed JAR, so when you combine then all in one JAR and run that JAR then signature of the signed JAR doesn’t match up and hence you get the security exception about signature mis-match.” 意思就是第三方包无法打包成一个jar包中运行。

16.-source 1.5 中不支持 lambda 表达式

这个应该是idea配置的 语言级别不正确导致的。

【解决方案】
(1) File –> Settings –> Build,Execution,Deployment –> Compiler –> Java Compiler,配置 Project bytecode version。
(2) 设置File –> Project Structrue –> Project,配置 SDK 版本
(3) 设置File –> Project Structrue –> Modules,配置 Dependencies 依赖的SDK版本
(4) 设置File –> Project Structrue –> Platform Settings,配置 SDK 版本。

17.字符串换行

换行这个事情让我费了好大的力气,使用 |- 这样的方式也是不行。这里有一点需要注意的:

  • 1.要加入 “” 双引号。
  • 2.在需要换行的地方天街 “\” 斜杠,斜杠之前不能有空格,斜杠之后可以有回车换行
1
2
3
4
5
6
7
8
# 签名拦截接口
signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys


# 签名拦截接口
signUrls: "/sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,\
/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,\
/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys"

18.Output directory is not specified

我同样的一个工程,在windows上的时候,就是出现这个问题。我指定了out目录,结果又显示:“Maven resources compiler: Failed to copy” 无法复制代码。

【解决方法】
解决方法就是删除了整个的文件,然后重新进行拉取,然后进行开发。这算是曲线救国了吧。

参考文章:
1.解决IDEA Error:Output directory is not specified
2.IDEA报错Output directory is not specified,为什么?怎么办? 这个时候,你可以手动创建一个文件夹命名为out,也可以先创建一个module,然后把java文件放在module里运行,这样就会自动生成输出文件夹了。

11.Check that the value ‘classpath:application-disaster-dev.yml’ at class path resource [application-dev.yml] - 29:9 is correct, or prefix it with ‘optional:’

12.Cannot determine path to ‘tools.jar’ library for 21

在Mac版本上运行 jdk 21,结果就报这个错误。

【解决方案】
(1)降低jdk版本
(2)升级 idea 版本,我用的是 2020.2 版本。

13.终端中文乱码

在使用 idea 终端的时候,总是显示中文乱码。

【尝试方案】
(1)打开 settings 设置界面,选择 Tools 中的 Terminal (File -> settings -> Tools -> Terminal),改为自己的路径,这样做虽然有效,但是打开终端之后,就是另外一个界面了,无法嵌入到idea中。
(2)修改 IDEA 配置文件,让其支持中文编码,修改 IDEA 配置文件,让其支持中文编码,改了很多地方,最后还是不行。

【解决方案】
最后修改了 powershell 支持中文的方法,控制面板-》【区域】 ,切换到【管理】栏目,点击【更改系统区域设置】,勾选使用 Unicode UTF-8,然后系统重启就可以了。

参考文章:
【1】.解决 IDEA 下的 Terminal 中文乱码的方法 1.将 IDEA Terminal 命令窗口修改为 Git bash 命令窗口。2.将 IDEA Terminal 命令窗口修改为 Git bash 命令窗口
【2】.IDEA 控制台中文乱码 4 种解决方案(图文教程) 这里面的几个方法都不起作用。
【3】.powershell打开中文乱码问题的解决办法 这里通过控制面板解决了 powershell 中文乱码的问题。

14.配置Conda环境

在我进行 idea 调试 python 的时候,出现了问题,如何配置虚拟环境,成为了首要的问题。有人说安装配置了 conda 之后,idea 会自动识别,但是对我的电脑无效。

(1)在 IntelliJ 中选择 File > Project Structure > Platform Settings > SDKs
(2)在添加 SDK 中,你可以选择添加 Python SDK

这里有两个地方,一个就是: Virtualenv Environment, 一个就是 Conda Environment,这里一个是选择自己虚拟环境的所在地,一个是配置自己conda的所在地,如果选择新建,指定目录之后,idea会自动下载。因为我把 conda安装在了 C:\Soft\anaconda3 目录下。配置完成环境变量之后,等 idea 更新完成之后,可以重启 idea.

(1)Conda Environment 配置:

  • interpreter:anaconda文件夹下的python解释器,我这里是: C:\Soft\anaconda3\python.exe
  • conda executable:anaconda\scripts\conda.exe(直接右上角搜索就行),我这里是:C:\Soft\anaconda3\Scripts\conda.exe

(2)Virtualent Environment 配置:

  • interpreter:anaconda文件夹下虚拟环境的python解释器,我这里有一个yolo的虚拟环境,于是配置: C:\Soft\anaconda3\envs\yolo\python.exe

(3)配置 Project,配置完成上面之后,还需要配置项目的 SDK

参考文章:
【1】.idea 配置使用python虚拟环境 及Django启动配置 快捷键输入:ctrl+alt+shift+s 点击加号 选择pythonSDK,这里选择.venv 环境下的pyhton.exe 文件 如图所示 点击ok
【2】.IntelliJ 中配置 Anaconda 如果你的系统中已经安装过了 Anaconda,那么 SDK 被 IntelliJ 自动识别。
【3】.安装好conda后怎么与IDE建立连接 file-setting–project interpreter–add python interpreter–选择conda environment–existing environment–选到python.exe(之前安装Anaconda的位置)
【4】.anaconda的安装和pycharm配置虚拟环境,以及anaconda/scripts文件夹下没有conda.exe
【5】.找到你的 Anaconda Python 解释器路径 windows运行:where python,linux和mac运行:which python。例如:使用 Anaconda3 和用户名“jsmith”– 的 Windows 10 C:\Users\jsmith\Anaconda3\python.exe
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。