Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Liubsyy/JarEditor
IDEA plugin for directly editing classes/resources in Jar without decompression.
https://github.com/Liubsyy/JarEditor
idea-plugin jar
Last synced: 5 days ago
JSON representation
IDEA plugin for directly editing classes/resources in Jar without decompression.
- Host: GitHub
- URL: https://github.com/Liubsyy/JarEditor
- Owner: Liubsyy
- License: apache-2.0
- Created: 2024-05-11T10:31:17.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-05-22T16:05:41.000Z (6 months ago)
- Last Synced: 2024-05-22T18:34:11.504Z (6 months ago)
- Topics: idea-plugin, jar
- Language: Java
- Homepage:
- Size: 784 KB
- Stars: 90
- Watchers: 1
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
JarEditor liubsyy
English | 简体中文[![License](https://img.shields.io/github/license/Liubsyy/JarEditor?color=blue)](./LICENSE)
[![downloads](https://img.shields.io/jetbrains/plugin/d/24397)](https://plugins.jetbrains.com/plugin/24397-jareditor)
[![release](https://img.shields.io/jetbrains/plugin/v/24397?label=version)](https://plugins.jetbrains.com/plugin/24397-jareditor)
![sdk](https://img.shields.io/badge/plugin%20sdk-IDEA%202020.3-red.svg)IDEA plugin for modifying files in jar directly without decompression, including class and resource files.
**Plugin marketplace** : [https://plugins.jetbrains.com/plugin/24397-jareditor](https://plugins.jetbrains.com/plugin/24397-jareditor)
## Features
- Edit class/resource file in jar directly without decompression
- Add/Delete/Rename file/directory in jar
- Search the contents of the jar package
- Copy/Paste file/directory to/from clipboard
- Support SpringBoot jar/Nested jar
- Support kotlin
- Export source jar
- Support class bytes tool : javassist
- Decompilers : Fernflower/CFR/Procyon## Quick start
### 1. Install plugin from marketplace
First install the plugin JarEditor from marketplace, IDEA at least version **2020.3**### 2. Edit and Build Jar
After installation , you can see a tab page to switch to Jar Editor in the .class decompiled file.> **External jar** : File->Project Structure->Libraries->Add Library , then you can see the decompiled jar.
> **Nested jar** : Right click on nested jar->JarEditor->Structure->Expand Nested JarAfter modification, click **Save(Compile)** to compile and save the currently modified java content.
Finally click **Build Jar** to write the compiled and saved class file into the Jar package.
Modifying the resource files in the jar package is also supported.
Here is an example:
### 3. Class bytes tool
For obfuscated jars, the decompilation result is not satisfactory. In this case, you can use tools to directly modify the bytecode.
Click the **Class bytes tool** icon to select the tool- **Javassist** : Field/method/constructor/static code can be modified/added/deleted (include inner class)
### 4. Other operations of JarEditor
In the project view of the jar package, right-click to see **JarEditor->New/Delete** and other operations, where you can add/delete/rename/copy/paste/export files.Click the **Search** icon to search the contents of the jar package. If it is a class jar, it will be searched based on the decompiled content.
## Some mechanisms
- The JDK that the compilation depends on is the JDK of your SDK list. You can choose SDK and target version of the compiled class.
- The classpath you depend on when compiling java is the project's Libraries dependency. If the dependency package cannot be found, you can add Libraries(File->Project Structure->Libraries).
- Save(Compile) will save the modified files to the subdirectory **jar_edit_out** of the directory where the jar package is located. Build Jar will incrementally write the modified files to jar, and finally delete this directory.### SDK Default Versions
When compiling and selecting **SDK Default**, the runtime JDK (JBR) integrated by Jetbrains is used. If SDK Default is not selected, the JDK installed by the specific user will be used.
IDEA|JDK
---|---
IDEA 2020.3 - IDEA 2022.1 |JBR JDK11
IDEA 2022.2 - IDEA 2024.1 |JBR JDK17
IDEA 2024.2 and later |JBR JDK21