开发工具问题
IDEA 控制台输出的tomcat日志乱码
tomcat/conf/
下的logging.properties
文件中的java.util.logging.ConsoleHandler.encoding = utf-8
修改为java.util.logging.ConsoleHandler.encoding = GBK
IDEA开发工具
开发工具实用功能
- 查看方法/属性调用链,第三方包可以下载后查看调用链
- 查看内存调用栈帧Frames
- 查看线程Threads
marven导入工程
无法启动可以尝试:Reimport All Marven Projects。 Lifecycle执行 clean、install
想要干净的工程文件
可以使用Idea的导出功能导出zip,解压出来就算原始的代码了,可以提交SVN。可以单独创建一个关联SVN的目录进行提交操作。
IDEA的重命名功能非常好用,还有MOVE功能可以改包名。
旧JavaWEB项目启动
- Tomcat6.0 根据需要添加servlet_2.5.jar
- Modules/Facets添加Struts、web.xml、WebResourceDirectory(工程目录/WebRoot)
- Libraries添加相应jar包
- Artifacts的Available Elements选择工程右键添加classes等
IDEA安装Lombok
File–>Settings–>Plugins–>Marketplace–>搜索lombok–>install。 重启IDEA
Idea开启annotation processing: File–>Settings–>Build,Ececution,Deployment–>Compiler–>Annotation Processors–>勾选 Enable annotation processing–>Apply
DEBUG
通过debug查询详细调用链
通过分析工具查看类依赖关系图
调试可以通过错误提示信息搜索到对于代码位置进行断点查看调用链
debug中key右键Frames中的方法,Copy Stack复制调用链
下载源码搜索功能
点击右侧Maven→下载代码按钮,没下载源码部分在源码包里面的代码没办法直接搜索
IDEA可以ctrl+shift+r
选择scope Project and Libraries
查询包中的方法
关联现有SVN
VCS菜单→Enable Version Control Integration…→Subversion
右键工程→Subversion→Share Directory…
可以对编译后的文件,IDEA文件标记为忽略状态,不提交到SVN服务器。SVN客户端也有这个操作,可以批量标记后提交删除服务器上已经删除的无用文件。
IDEA启动多个相同项目
Run/Debug Configurations
→ 复制一个配置 → Override parameters:
添加server.port=8085
DUMP分析内存
4:run
→Dump Threads Ctrl+Pause/Break
查看线程Dump,内容信息可以点击打开查看详情,查找正在运行的线程
→Attach Debugger
debugger中分析services
→Get Dump Threads
通过Export to Text File 再通过线程名字就可以搜索到对应的线程信息非常好用
maven 打包 skip test
maven配置→Runner→勾选Skip tests
或者命令执行是用-Dmaven.test.skip=true
或者 -DskipTests
或者POM文件中加skip
或者maven的install界面中有一个跳过测试的闪电按钮
导入maven项目
打开maven工程,执行右侧maven菜单,点击刷新按钮,执行clean操作,不行的话就试试compile、 intall。还可以执行Build→Rebuild Project
修改代码不生效
有时候修改不生效可能自动编译功能出了问题,可以断点看看断点有没变成红色叉叉。或者重新执行install看看。
修改On ‘Update’ action: Update classes and resources
修改on frame deactivation: Update classes and resources 也就是idea失去焦点的操作,一般更新resources就够了
右下角Event Log可以查看最近编译时间
扩展配置:
- maven
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build> - 设置IDEA
组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” - “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically”
查看字节码
- 安装
jclasslib
插件 运行。view→show Bytecode With jclasslib,点击里面方法可以看到字节码 - 直接view → show bytecode 信息不全
- javap -v 类名 不好用效率低
查看汇编代码
- hsdis-amd64.dll hsdis-amd64.lib 将两个文件放在你的 jre/bin 路径下的路径里
- 去idea 去配置启动参数VM Options:
-server -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:CompileCommand=compileonly,*ClassName.method
(*
后面配置成自己的 “类名.方法名”) - JRE选择刚刚放置文件的jre路径
- 运行程序,会打印出相关汇编代码
生成.iml
- 刷新一下Maven Project就会自动生成.iml文件
- 在缺少.iml文件项目下运行
mvn idea:module
远程调试JPDA
Linux(bin/catalina.sh
)
1 | 将 localhost 改为 0.0.0.0 |
Run→Edit Configurations 添加远程调试配置,选 Remote,不是 Tomcat server 下的 Remot
输入Host与Port,选择本地工程项目与服务器代码相同的项目,OK启动调试
在服务器上webapps目录放入对应项目的war包,自动解压后启动过程都可以调试
调试案例Epoll方法linux环境才会走进去:
1 | io.netty.bootstrap.Bootstrap : Failed to set channel option 'ALLOCATOR' with value 'PooledByteBufAllocator(directByDefault: true)' for channel '[id: 0x8ec36861]' |
对setChannelOptions方法进行断点,EpollSocketChannelConfig 147行} else if (option == EpollChannelOption.TCP_CORK) {
报错,option 的name是ALLOCATOR,value是PooledByteBufAllocator(directByDefault: true)
是个复杂对象。option,没办法==后面的对象,报错打印错误信息。但是报错后会打印异常继续往下循环setOption所以还是可以正常用的。比如SO_KEEPALIVE等的设置。
maven打包
记得要clean再install不然会把旧的类什么的也打包进去,还要在上级进行install。
IDEA没有认到项目
右键子工程POM文件→Add as Maven Project
注意
- 不要重复引人依赖。
- 不要引入冲突的包。
- 重启idea试试。
问题汇总
Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16
不适用AndroidStudio
- IDEA 打开设置:
flie -> settings -> plugins
找到 kotlin 插件 - 把 kotlin 插件 disable,然后restart IDEA
Visual Studio Code
乱码问题:可以安装GBKtoUTF8插件或者Reopen with Encoding
CSV
csv就是文本存储通过分隔符分隔字段,可以存储长数字的,用Excel打开会出现显示问题,通过记事本,或者程序打开是正常的。
SVN使用
如果文件夹冲突出现红色可以右键标记成已经解决。