Eclipse Class Decompiler & Lombok安装

本文介绍如何使用EclipseClassDecompiler进行Java字节码文件的反编译,以及利用Lombok注解简化JavaBean类的编写,提高编码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用Eclipse Class Decompiler反编译Java字节码文件

在一定的场景中我们需要使用反编译工具来查看代码,这里推荐一款Java反编译工具,当然你也可以使用自带的javap工具。

1、打开eclipse的Eclipse marketplace,在find中键入Decomplier,下拉找到Enhanced Class Decomplier,install 》 accept其协议 》 install anyway,傻瓜式安装即可。

在这里插入图片描述

2、使用两种较便捷的方式使用其功能

(1)在反编译视图中打开

在这里插入图片描述

(2)打开Navigator导航视图,而不是explorer视图

在这里插入图片描述

然后直接在导航视图里面直接双击就可以,推荐这种便捷一些。

二、利用Lombok简化我们的JavaBean类的编写

废话不多说,Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。

下面给出Lombok的maven依赖:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.2</version>
	<scope>provided</scope>
</dependency>

目前我们可以使用其@Getter、@Setter注解简化我们的JavaBean类编写。如:

在这里插入图片描述

可以看到我们并没有去编写简单的getter、setter,而是通过两个注解简化了我们的代码。反编译之后可以看出,我们编写的代码已经通过编译时修改AST达到了原来的目的。

在这里插入图片描述

java.lang.ExceptionInInitializerError at org.jetbrains.jps.cmdline.ClasspathBootstrap.getBuildProcessApplicationClasspath(ClasspathBootstrap.java:134) at com.intellij.compiler.server.impl.BuildProcessClasspathManager.getBuildProcessClasspath(BuildProcessClasspathManager.kt:43) at com.intellij.compiler.server.BuildManager.launchBuildProcess(BuildManager.java:1568) at com.intellij.compiler.server.BuildManager.lambda$scheduleBuild$16(BuildManager.java:990) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:244) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30) at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:222) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:210) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassFormatError: LocalVariableTable has wrong length in class file org/apache/maven/model/Repository at org.jetbrains.idea.maven.aether.ArtifactRepositoryManager$1.serviceCreationFailed(ArtifactRepositoryManager.java:76) at org.eclipse.aether.impl.DefaultServiceLocator.serviceCreationFailed(DefaultServiceLocator.java:291) at org.eclipse.aether.impl.DefaultServiceLocator.access$000(DefaultServiceLocator.java:79) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.newInstance(DefaultServiceLocator.java:175) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.getInstances(DefaultServiceLocator.java:139) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.getInstance(DefaultServiceLocator.java:125) at org.eclipse.aether.impl.DefaultServiceLocator.getService(DefaultServiceLocator.java:278) at org.jetbrains.idea.maven.aether.ArtifactRepositoryManager.&lt;clinit&gt;(ArtifactRepositoryManager.java:80) ... 18 more Caused by: java.lang.RuntimeException: java.lang.ClassFormatError: LocalVariableTable has wrong length in class file org/apache/maven/model/Repository at org.jetbrains.idea.maven.aether.ArtifactRepositoryManager$1.serviceCreationFailed(ArtifactRepositoryManager.java:76) at org.eclipse.aether.impl.DefaultServiceLocator.serviceCreationFailed(DefaultServiceLocator.java:291) at org.eclipse.aether.impl.DefaultServiceLocator.access$000(DefaultServiceLocator.java:79) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.newInstance(DefaultServiceLocator.java:175) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.getInstances(DefaultServiceLocator.java:139) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.getInstance(DefaultServiceLocator.java:125) at org.eclipse.aether.impl.DefaultServiceLocator.getService(DefaultServiceLocator.java:278) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.initService(DefaultRepositorySystem.java:147) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.newInstance(DefaultServiceLocator.java:169) ... 22 more Caused by: java.lang.ClassFormatError: LocalVariableTable has wrong length in class file org/apache/maven/model/Repository at java.base/java.lang.ClassLoader.defineClass2(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1108) at com.intellij.util.lang.UrlClassLoader.consumeClassData(UrlClassLoader.java:289) at com.intellij.util.lang.ZipResourceFile.findClass(ZipResourceFile.java:113) at com.intellij.util.lang.JarLoader.findClass(JarLoader.java:58) at com.intellij.util.lang.ClassPath.findClassInLoader(ClassPath.java:240) at com.intellij.util.lang.ClassPath.findClass(ClassPath.java:190) at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:240) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) at org.apache.maven.model.building.DefaultModelBuilderFactory.newModelValidator(DefaultModelBuilderFactory.java:149) at org.apache.maven.model.building.DefaultModelBuilderFactory.newInstance(DefaultModelBuilderFactory.java:227) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.initService(DefaultArtifactDescriptorReader.java:119) at org.eclipse.aether.impl.DefaultServiceLocator$Entry.newInstance(DefaultServiceLocator.java:169) ... 27 more
最新发布
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值