# components **Repository Path**: JustryDeng/components ## Basic Information - **Project Name**: components - **Description**: 实用小组件(动态编译、反编译、dump class等) - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 7 - **Created**: 2021-09-26 - **Last Updated**: 2024-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: 工具 ## README # components - [components](#components) - [component-compile:编译](#component-compile编译) - [maven坐标](#maven坐标) - [使用示例](#使用示例) - [component-decompile:反编译](#component-decompile反编译) - [maven坐标](#maven坐标-1) - [使用示例](#使用示例-1) - [component-dump-class:dump出class](#component-dump-classdump出class) - [maven坐标](#maven坐标-2) - [使用示例](#使用示例-2) --- ## component-compile:编译 ### maven坐标 ```xml com.idea-aedi component-compile 2.6.0 ``` ### 使用示例 ```java // 全类名-class字节数组 Map byteCodes = Compiler.create().addSource( CompilerTest.class.getClassLoader().getResourceAsStream("TestLogger1.java") ).buildByteCodes(); ``` 更多用法,详见[其它示例](https://gitee.com/JustryDeng/components/tree/master/component-compile/src/test/java/com/ideaaedi/component/compile),或者直接看源码。 ## component-decompile:反编译 ### maven坐标 ```xml com.idea-aedi component-decompile 2.6.0 ``` ### 使用示例 ```java List list = new ArrayList<>(8); list.add(IOUtil.toBytes(new File(decompileDir, "klass/AbstractClassGenerator$ClassLoaderData$1.class"))); list.add(IOUtil.toBytes(new File(decompileDir, "klass/AbstractClassGenerator$ClassLoaderData.class"))); list.add(IOUtil.toBytes(new File(decompileDir, "klass/AbstractClassGenerator.class"))); list.add(IOUtil.toBytes(new File(decompileDir, "klass/AbstractClassGenerator$ClassLoaderData$3.class"))); list.add(IOUtil.toBytes(new File(decompileDir, "klass/AbstractClassGenerator$Source.class"))); list.add(IOUtil.toBytes(new File(decompileDir, "klass/AbstractClassGenerator$ClassLoaderData$2.class"))); /* * 反编译获取源码并解析全类名
* @see Decompiler#decompile(List, String) * * @param classByteList * 待反编译的clas * @return */ List> triples = Decompiler.defaultDecompiler().decompileAsTriple(list); ``` 更多用法,详见[其它示例](https://gitee.com/JustryDeng/components/tree/master/component-decompile/src/test/java/com/ideaaedi/component/decompile),或者直接看源码。 ## component-dump-class:dump出class ### maven坐标 ```xml com.idea-aedi component-dump-class 2.6.0 ``` ### 使用示例 ```java // key - 类名, value - (k - 加载该类的类加载器信息, v - class字节码) Map> dumpedClasses = NonExitClassFileTransformerExecutor.create("com.ideaaedi.component.dump", null, false).exec(); dumpedClasses.forEach((k, map) -> { System.out.println(k + "\t" + map.keySet() + "\t" + map.values()); }); ``` 更多用法,详见[其它示例](https://gitee.com/JustryDeng/components/tree/master/component-dump-class/src/test/java/com/ideaaedi/component/dump),或者直接看源码。