1.基于IDEA2023.1.2使用Java语言开发IDEA插件的源码操作步骤
2.使用IDEA调试远程Java代码
3.JAVA阅读源码,大量英文注释阅读不方便,源码求集成idea里面的源码翻译java注释由英文翻译为中文的工具。
4.用好这个IDEA插件,源码写代码效率至少提升5倍!源码
5.IDEA 自带的源码溯源码羊绒反编译工具
6.idea编译java后中文乱码怎么解决
基于IDEA2023.1.2使用Java语言开发IDEA插件的操作步骤
为了提供一次顺利开发IDEA插件的流程,本文将结合最新版本IDEA.1.2,源码指导使用Java语言进行插件开发。源码首先,源码确认IDEA为最新版本并安装了中文语言包。源码
在IDEA设置中,源码选择当前版本确保为最新,源码IDEA .1.2版本号Build #IC-..,源码运行版本为.0.6,源码使用的源码是OpenJDK -Bit Server VM。这为后续开发提供了稳定的环境。
创建插件项目时,选择IDEA插件选项,注意JDK版本应选用OpenJDK 。默认项目语言为Kotlin,但需要切换至Java,确保与插件开发需求一致。
手动替换项目中的Gradle文件,即将settings.gradle.kts重命名成settings.gradle,同时将build.gradle.kts替换为build.gradle。在使用Gradle 8.1.1版本时,确保代码适应更新后的语法。
新建Java源代码文件夹,重新加载工程,确保IDEA能够识别并下载相关代码和依赖。如果在加载过程中遇到问题,可以通过IDEA设置中搜索Gradle,opencart 语言源码调整JDK版本至OpenJDK ,再重新加载工程。
编写验证效果的Action类,配置菜单信息并插入到plugin.xml文件中。运行IDEA的Gradle面板,执行runIde任务以测试插件效果。如果遇到错误提示,如“Caused by: java.lang.NullPointerException: getHeaderField("Location") must not be null”,可能需要切换到脱机模式运行Gradle任务。
通过参考jetbrains.com/help/idea和github.com/JetBrains/gradle等资源,解决可能出现的配置问题。在新启动的IDEA中,新建项目并创建Java类,右键菜单进行操作,验证IDEA插件功能是否正常。
至此,基于IDEA.1.2使用Java语言开发IDEA插件的验证流程顺利完成,实现了插件功能的部署与测试。
使用IDEA调试远程Java代码
在IDEA中调试远程Java代码是一项常见的需求。本文将指导你如何在IDEA中配置并实现远程调试,无需担忧步骤细节,只需跟随操作即可。
首先,打开IDEA的“Run/Debug Configurations”设置,输入远程服务器的IP和端口。红框中的信息在后续步骤会用到,暂时不用修改。
接下来,登录远程服务器,编辑tomcat的catalina.sh文件,添加配置,星座分析源码参数应与第一步的IP和端口对应。注意,根据远程服务器的JDK版本,可能需要使用红框中的不同输入框来获取相应的参数。
启动IDEA服务,为需要调试的代码设置断点。当远程服务器上的程序被访问时,IDEA会自动连接并进入断点模式。点击相应的启动按钮,观察控制台输出以确认连接成功。
关于配置参数的含义,绿框中的Transport选择IDEA与服务器的通信方式,通常选择Socket或Shared memory。Debugger mode建议使用Attach模式,等待IDEA连接。Host和Port则是远程服务器的地址和端口。
红框中的参数是自动生成的,与绿框设置相关,用于启动jdwp服务器。-Xrunjdwp指示JVM使用jdwp协议,transport根据上述选择进行配置,address则对应远程服务器的端口。
注意事项包括:确保远程服务器的指定端口未被占用且能被本地访问,通过telnet测试;代码部署需与本地源代码一致,以保证断点功能;在catalina.sh中的JAVA_OPTS参数添加新配置时,只需追加即可。
JAVA阅读源码,大量英文注释阅读不方便,求集成idea里面的翻译java注释由英文翻译为中文的工具。
学会在idea(eclipse)中阅读、调试源码,owasp zap 源码是java程序员必不可少的一项技能。在idea中配完环境后,默认其实也是能够对jdk的源码进行debug调试的。但是无法在源码中添加自己的注释,无法添加自己的理解。如果干瞪眼看的话,可能过段时间,就忘记了。下面就介绍下,如何在jdk源码中为所欲为,像在我们自己的代码中一样写注释、调代码:
打开idea,选择Project->File->Project Structure->SDKs->Sourcepath,初始状态如下图 :
打开本地jdk安装路径,本处为E:\java\jdk8,将此路径下的src.zip压缩包解压到自定义的指定文件夹(可以在电脑磁盘任意位置),本处解压到同目录的jdk_source文件夹下,如下图:
继续在步骤1中的设置页面中操作,将E:\java\jdk8\src.zip通过右侧的减号将其移除;并通过右侧的加号,将解压文件夹E:\java\jdk8\jdk_source导入进来;点击apply,再点击OK。导入结果见下图:
这时,再重新打开jdk的源码类,我们就可以在源java文件中,添加自己的注释了。
一定注意:添加注释时,一定不要新加一行写注释。最好在一行代码的后面,使用//进行注释。否则行号和真正的jre中编译后的代码行号对应不上,如果对源码debug时,ar drone 源码会出现代码运行和行号不匹配的情况
用好这个IDEA插件,写代码效率至少提升5倍!
还在编写无聊枯燥又难以维护的POJO吗?洁癖者的春天在哪里?请看Lombok!在过往的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
首先说明一下:任何技术的出现都是为了解决某一类问题的,如果在此基础上再建立奇技*巧,不如回归Java本身。应该保持合理使用而不滥用。
Lombok的使用非常简单,下面我们一起来看下:
1)引入相应的maven包:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1..</version><scope>provided</scope></dependency>Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。
2)添加IDE工具对Lombok的支持:
IDEA中引入Lombok支持如下:
点击File--Settings设置界面,安装Lombok插件:
点击File--Settings设置界面,开启AnnocationProcessors:
开启该项是为了让Lombok注解在编译阶段起到作用。
Eclipse的Lombok插件安装可以自行百度,也比较简单,值得一提的是,由于Eclipse内置的编译器不是Oraclejavac,而是eclipse自己实现的EclipseCompilerforJava(ECJ).要让ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下两项内容:
-Xbootclasspath/a:[lombok.jar所在路径]
-javaagent:[lombok.jar所在路径]
3)Lombok实现原理:
自从Java6起,javac就支持“JSRPluggableAnnotationProcessingAPI”规范,只要程序实现了该API,就能在javac运行的时候得到调用。
Lombok就是一个实现了"JSRAPI"的程序。在使用javac的过程中,它产生作用的具体流程如下:
javac对源代码进行分析,生成一棵抽象语法树(AST)
javac编译过程中调用实现了JSR的Lombok程序
此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树(AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点
javac使用修改后的抽象语法树(AST)生成字节码文件
4)Lombok注解的使用:
POJO类常用注解:
@Getter/@Setter:作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
packagecom.trace;importlombok.AccessLevel;importlombok.Getter;importlombok.Setter;/***CreatedbyTraceon/5/.<br/>*DESC:测试类*/@SuppressWarnings("unused")publicclassTestClass{ publicstaticvoidmain(String[]args){ }@Getter(value=AccessLevel.PUBLIC)@Setter(value=AccessLevel.PUBLIC)publicstaticclassPerson{ privateStringname;privateintage;privatebooleanfriendly;}publicstaticclassAnimal{ privateStringname;privateintage;@Getter@Setterprivatebooleanfunny;}}在Structure视图中,可以看到已经生成了getter/setter等方法:
编译后的代码如下:[这也是传统Java编程需要编写的样板代码]
////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernflowerdecompiler)//packagecom.trace;publicclassTestClass{ publicTestClass(){ }publicstaticvoidmain(String[]args){ }publicstaticclassAnimal{ privateStringname;privateintage;privatebooleanfunny;publicAnimal(){ }publicbooleanisFunny(){ returnthis.funny;}publicvoidsetFunny(booleanfunny){ this.funny=funny;}}publicstaticclassPerson{ privateStringname;privateintage;privatebooleanfriendly;publicPerson(){ }publicStringgetName(){ returnthis.name;}publicintgetAge(){ returnthis.age;}publicbooleanisFriendly(){ returnthis.friendly;}publicvoidsetName(Stringname){ this.name=name;}publicvoidsetAge(intage){ this.age=age;}publicvoidsetFriendly(booleanfriendly){ this.friendly=friendly;}}}@ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
@EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode
@NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
@NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。
staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
@NoArgsConstructor:生成无参构造器;
@RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器;
@AllArgsConstructor:生成全参构造器。
编译后结果:
publicstaticclassPerson{ @NonNullprivateStringname;privateintage;privatebooleanfriendly;publicStringtoString(){ return"TestClass.Person(name="+this.getName()+",age="+this.getAge()+")";}@NonNullpublicStringgetName(){ returnthis.name;}publicintgetAge(){ returnthis.age;}publicbooleanisFriendly(){ returnthis.friendly;}publicvoidsetName(@NonNullStringname){ if(name==null){ thrownewNullPointerException("name");}else{ this.name=name;}}publicvoidsetAge(intage){ this.age=age;}publicvoidsetFriendly(booleanfriendly){ this.friendly=friendly;}privatePerson(){ }privatestaticTestClass.Personof(){ returnnewTestClass.Person();}@ConstructorProperties({ "name"})Person(@NonNullStringname){ if(name==null){ thrownewNullPointerException("name");}else{ this.name=name;}}@ConstructorProperties({ "name","age","friendly"})publicPerson(@NonNullStringname,intage,booleanfriendly){ if(name==null){ thrownewNullPointerException("name");}else{ this.name=name;this.age=age;this.friendly=friendly;}}}@Data:作用于类上,是以下注解的集合:@ToString@EqualsAndHashCode@Getter@Setter@RequiredArgsConstructor
@Builder:作用于类上,将类转变为建造者模式
@Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:
其他重要注解:
@Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
编译后结果如下:
是不是简洁了太多。
@SneakyThrows:可以对受检异常进行捕捉并抛出,可以改写上述的main方法如下:
@Synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大。
作者:LiWenD正在掘金
IDEA 自带的反编译工具
IDEA的内置工具——Java Bytecode Decompiler,无论社区版还是专业版,都能为你提供反编译的支持。核心的java-decompiler.jar文件,隐藏在IDEA安装目录下的/plugins/java-decompiler/lib/路径中。这个工具背后是Fernflower的反编译技术,其源代码可以在github.com/JetBrains找到。
要使用这个工具,首先确保java-decompiler.jar文件在工作目录中。基本操作方法如下:
- 选项[-=]*,*可以表示0、1个或多个,具体选项请查阅源码,如0表示关闭,1表示开启。
- 源文件[]+,可以是.class、.jar或目录,带-e的源文件表示依赖,有助于分析代码关系。
- 目标目录,用于存放反编译结果,只能有一个。
举个例子,你可以执行以下命令反编译单个.class文件:`java-decompiler -o d:/decompiled d:/my.class`,这将把d:/my.class反编译成my.java,存放在d:/decompiled。
对于.jar文件,如`java-decompiler -o d:/decompiled d:/my.jar`,会生成一个新的my.jar,内部是.java格式的源码,而非.class。为了查看源码,通常先解压反编译后的my.jar。
如果要反编译一个目录,用`java-decompiler -o d:/decompiled d:/my`,这会在d:/decompiled中生成一个名为my的新目录。
在处理.jar文件时,推荐先将其解压为目录,再进行反编译操作。IDEA自带的Java Bytecode Decompiler为开发者提供了强大的反编译功能,方便在需要时查看和理解代码结构。
idea编译java后中文乱码怎么解决
解决IDEA编译Java后中文乱码问题的方法:一、确保源码文件编码正确
在编写Java代码时,确保你的源码文件编码为UTF-8。IDEA可以自动识别文件编码,但有时需要手动设置或检查。可以通过查看文件状态栏来确认编码。如果不是UTF-8,建议将文件另存为UTF-8编码格式。
二、检查项目编码设置
在IDEA中,你需要检查项目的编码设置。在项目的根目录下,右击选择“Mark Directory as”然后选择“Sources Root”。确保在“File Encoding”设置中选择了正确的编码方式,通常为UTF-8。这样可以确保IDEA在处理项目文件时使用正确的编码。
三、检查JVM编码设置
在编译和运行Java程序时,要确保JVM使用正确的字符编码。可以通过在命令行参数中设置JVM的默认字符编码来解决乱码问题。例如,在启动Java程序时,使用`-Dfile.encoding=UTF-8`参数来指定UTF-8编码。
四、检查控制台输出编码
如果在控制台输出中出现了乱码,可能是因为控制台使用的编码与程序输出的编码不一致。可以尝试修改IDEA控制台输出的编码设置。在IDEA的“Run”菜单中,选择“Edit Configurations”,然后在相应配置下设置“VM options”,添加或修改编码相关的参数。
综上所述,解决IDEA编译Java后中文乱码问题,主要需要从源码文件编码、项目编码设置、JVM编码设置以及控制台输出编码等方面进行检查和调整。确保所有涉及编码的地方都使用正确的UTF-8编码,可以有效解决中文乱码问题。
热门Java开发工具IDEA入门指南——IDEA默认用户界面
IntelliJ IDEA是Java编程语言的集成开发环境,被誉为业界最佳的Java开发工具。它拥有强大的智能代码助手、自动提示、重构功能、JavaEE支持、版本控制工具、代码分析以及创新的GUI设计等特点。
本文将介绍IDEA的用户界面。
1、用户界面
打开项目后,IDEA的默认用户界面如下:
用户界面的外观和行为可能因插件集、版本和配置设置而有所不同。
2、编辑器:编辑
编辑器用于阅读、编写和探索源代码。
3、导航栏:导航
导航栏是项目视图的快速替代方案,可以导航项目结构并打开文件进行编辑。
4、状态栏:状态
状态栏显示事件消息和操作描述。右键单击状态栏可以显示工具窗口,并显示后台任务的进度。
5、工具窗口
工具窗口提供补充编辑代码的功能,如项目结构、应用程序运行输出等。
6、上下文菜单
右键单击界面元素可以查看当前上下文中可用的操作。
7、弹出菜单
弹出菜单提供对与当前上下文相关的操作的快速访问。
8、主窗口
主窗口允许使用单个IDEA项目,可以在多个窗口中打开多个项目。