jar包**解包**

将jar包**解包**,想要通过解包后的文件直接debug,但是出现问题,原因是这是一个springboot项目的jar包文件,解包后出现BOOT-INF等专有文件夹,没有办法直接通过这些文件目录进行环境配置。

##### 知识点:

springboot项目可以打成jar包或war包进行部署,但是是现有源项目文件再通过maven打成包,不能直接通过jar包解包后的文件目录在打成war包

打成jar包会出现BOOT-INF文件夹,打成war包会现WEB-INF文件夹,文件夹里面都有classes文件夹以及lib文件夹,classes文件夹里是各种class文件,lib里是各种jar包依赖

#### 尝试二

这条路走不通后我想把BOOT-INF里的文件取出来,直接自己建立一个新的项目,但是在网上查阅了很多资料,都没有相关的教程,所以就放弃了。

首先我不知道这个想法是否可行,原因是我现在对于springboot或者说网站项目环境配置相关的知识积累的还不够多,比如不知道一个一般的项目的文件目录是什么样的,里面的各种类型的文件都是干什么的等等,之后这些知识点要逐渐补全

#### 尝试三

之后去问了同学,他让我搜索IDEA调试jar包,其实我搜索过相关的关键词,但是当时主要是想找本地调试jar相关的点,忽略了这种远程调试的功能也可以用在本地调试上,而且我在搜索一些资料无果后就默认了jar包里的文件在IDEA中不能阅读,这是错误的。所以最后我通过remote远程调试的方法成功实现的想法,但是比较鸡肋的一点是有些地方下不了断点,或者说下了断点也没法进入断点,原因网上有人说是因为**反编译**的问题,我持怀疑态度,但是我现在没法解决。

### 方法

aaaaaaaaa

条路走不通后我想把BOOT-INF里的文件取出来,直接自己建立一个新的项目,但是在网上查阅了很多资料,都没有相关的教程,所以就放弃了。

首先我不知道这个想法是否可行,原因是我现在对于springboot或者说网站项目环境配置相关的知识积累的还不够多,比如不知道一个一般的项目的文件目录是什么样的,里面的各种类型的文件都是干什么的等等,之后这些知识点要逐渐补全

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java编程可以利用`java.util.jar`包下的`JarFile`和`JarEntry`类来实现jar解包和打包。 1. 解包jar文件: ```java import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class JarUnpacker { public static void unpack(String jarPath, String destPath) throws Exception { JarFile jarFile = new JarFile(jarPath); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry jarEntry = entries.nextElement(); String fileName = jarEntry.getName(); File destFile = new File(destPath + File.separator + fileName); if (jarEntry.isDirectory()) { destFile.mkdirs(); } else { InputStream in = jarFile.getInputStream(jarEntry); OutputStream out = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } in.close(); out.close(); } } jarFile.close(); } } ``` 以上代码会将`jarPath`指定的jar文件解压到`destPath`指定的目录中。 2. 打包jar文件: ```java import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; public class JarPacker { public static void pack(String sourcePath, String jarPath) throws Exception { JarOutputStream jarOut = new JarOutputStream(new FileOutputStream(jarPath)); File sourceFile = new File(sourcePath); if (sourceFile.isDirectory()) { packDir(sourceFile, "", jarOut); } else { packFile(sourceFile, "", jarOut); } jarOut.close(); } private static void packDir(File dir, String parentPath, JarOutputStream jarOut) throws IOException { String dirPath = parentPath + dir.getName() + "/"; JarEntry jarEntry = new JarEntry(dirPath); jarOut.putNextEntry(jarEntry); File[] files = dir.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { packDir(file, dirPath, jarOut); } else { packFile(file, dirPath, jarOut); } } } } private static void packFile(File file, String parentPath, JarOutputStream jarOut) throws IOException { JarEntry jarEntry = new JarEntry(parentPath + file.getName()); jarOut.putNextEntry(jarEntry); byte[] buffer = new byte[1024]; int len; FileInputStream in = new FileInputStream(file); while ((len = in.read(buffer)) > 0) { jarOut.write(buffer, 0, len); } in.close(); } } ``` 以上代码会将`sourcePath`指定的文件或目录打包成`jarPath`指定的jar文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值