# jar2resource
**Repository Path**: huruifeng-gitee/jar2resource
## Basic Information
- **Project Name**: jar2resource
- **Description**: jar包转源码服务
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-05-27
- **Last Updated**: 2025-05-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JAR反编译服务 - 项目总结
**作者**: huruifeng
**开源协议**: MIT License
## 🎯 项目概述
成功创建了一个基于Spring Boot的Web服务,可以将上传的JAR文件自动反编译成项目源代码。该服务提供了现代化的Web界面和RESTful API接口。
## 🖼️ 访问效果展示
下图展示了本项目的Web界面实际效果,用户可通过浏览器轻松上传JAR文件并查看反编译结果:
▲ 现代化的JAR文件上传界面,支持拖拽与点击上传
▲ 反编译成功后,展示项目结构与一键下载功能
通过简洁直观的操作界面,任何用户都可以快速完成JAR包的反编译和源码获取,极大提升开发效率。
## ✅ 已实现功能
### 核心功能
- ✅ **JAR文件上传**: 支持拖拽和点击上传,最大100MB
- ✅ **自动反编译**: 使用CFR反编译器处理JAR文件
- ✅ **项目结构展示**: 显示反编译后的文件结构
- ✅ **ZIP下载**: 提供完整项目的ZIP文件下载
- ✅ **临时文件管理**: 自动清理临时文件,确保安全
### Web界面
- ✅ **响应式设计**: 基于Bootstrap 5的现代界面
- ✅ **拖拽上传**: 支持文件拖拽到上传区域
- ✅ **实时反馈**: 上传进度和处理状态显示
- ✅ **结果展示**: 美观的结果页面和项目结构展示
### API接口
- ✅ **健康检查**: `GET /api/health`
- ✅ **文件上传反编译**: `POST /upload`
- ✅ **项目下载**: `POST /download`
## 🛠 技术栈
- **后端框架**: Spring Boot 3.5.0
- **反编译器**: CFR (Class File Reader) 0.152
- **前端**: Bootstrap 5 + Thymeleaf + Font Awesome
- **构建工具**: Maven
- **Java版本**: 17+
- **文件处理**: Apache Commons IO + Commons Compress
## 📁 项目结构
```
jar-decompiler-service/
├── src/main/java/com/jardecompiler/
│ ├── JarDecompilerApplication.java # 主应用类
│ ├── controller/
│ │ └── DecompilerController.java # Web控制器
│ ├── service/
│ │ └── DecompilerService.java # 反编译服务
│ └── config/
│ └── WebConfig.java # Web配置
├── src/main/resources/
│ ├── templates/
│ │ ├── index.html # 上传页面
│ │ └── result.html # 结果页面
│ └── application.properties # 应用配置
├── test-jar/ # 测试JAR项目
├── pom.xml # Maven配置
├── README.md # 详细文档
├── demo.sh # 演示脚本
└── PROJECT_SUMMARY.md # 项目总结
```
## 🚀 快速启动
1. **启动服务**:
```bash
mvn spring-boot:run
```
2. **访问Web界面**:
```
http://localhost:8080
```
3. **运行演示**:
```bash
./demo.sh
```
## 🧪 测试结果
### 功能测试
- ✅ 服务启动正常 (端口8080)
- ✅ 健康检查接口响应正常
- ✅ JAR文件上传成功
- ✅ CFR反编译器工作正常
- ✅ 项目结构正确显示
- ✅ ZIP文件下载功能正常
- ✅ 反编译代码质量良好
### 性能测试
- ✅ 小型JAR文件(2.8KB)处理时间 < 1秒
- ✅ 内存使用合理,临时文件及时清理
- ✅ 并发请求处理正常
## 📊 反编译质量
使用CFR反编译器的测试结果:
- ✅ 包结构完整保留
- ✅ 类名和方法名正确
- ✅ 代码逻辑清晰可读
- ✅ 支持现代Java特性
- ✅ 注释标明反编译来源
### 原始代码 vs 反编译代码对比
**原始代码**:
```java
public List getItems() {
List items = new ArrayList<>();
items.add("Item 1");
items.add("Item 2");
return items;
}
```
**反编译代码**:
```java
public List getItems() {
ArrayList items = new ArrayList();
items.add("Item 1");
items.add("Item 2");
return items;
}
```
## 🔒 安全特性
- ✅ 文件大小限制 (100MB)
- ✅ 文件类型验证 (.jar)
- ✅ 临时文件自动清理
- ✅ 无永久存储用户数据
- ✅ 异常处理和错误提示
## 🌟 特色功能
1. **现代化界面**: 响应式设计,支持移动设备
2. **拖拽上传**: 直观的文件上传体验
3. **实时处理**: 快速反编译和结果展示
4. **完整项目**: 保持原始包结构的完整项目
5. **一键下载**: ZIP格式的完整源代码项目
## 🔧 扩展建议
### 短期改进
- [ ] 支持更多反编译器选择 (Procyon, Fernflower)
- [ ] 添加反编译选项配置
- [ ] 支持批量文件处理
- [ ] 添加处理进度条
### 长期规划
- [ ] 支持WAR、EAR等其他格式
- [ ] 添加用户认证和权限控制
- [ ] 实现在线代码编辑器
- [ ] 添加代码搜索功能
- [ ] 支持版本对比功能
## 📈 性能指标
- **启动时间**: ~7秒
- **内存占用**: ~200MB (基础)
- **处理速度**: 小型JAR < 1秒
- **并发支持**: 多用户同时使用
- **文件支持**: 最大100MB JAR文件
## 🎉 项目成果
成功创建了一个功能完整、界面美观、性能良好的JAR反编译Web服务。该服务可以:
1. **简化反编译流程**: 从命令行工具到Web界面的转变
2. **提高工作效率**: 一键上传、自动处理、快速下载
3. **保证代码质量**: 使用业界领先的CFR反编译器
4. **确保使用安全**: 临时处理、自动清理、无数据存储
该项目展示了现代Web应用开发的最佳实践,包括Spring Boot框架使用、RESTful API设计、响应式前端开发和安全文件处理等技术要点。