最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決jar包rar壓縮后無(wú)法運(yùn)行問(wèn)題

 更新時(shí)間:2024年05月20日 11:41:01   作者:Therf  
這篇文章主要介紹了解決jar包rar壓縮后無(wú)法運(yùn)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

jar包rar壓縮后無(wú)法運(yùn)行

報(bào)錯(cuò)為Failed to get nested archive for entry

java.io.IOException: Unable to open nested jar file

It has been compressed and nested jar files must be stored without compression,Please check the mechanism used to create your executable jar file

如果有出現(xiàn)該問(wèn)題,請(qǐng)檢查jar包壓縮時(shí)是否用壓縮軟件方式打開。

如果丟進(jìn)去的是第三方j(luò)ar包或者更新后的引入lib包,復(fù)制到壓縮目錄時(shí)需要選擇壓縮方式,一定要選擇存儲(chǔ)方式。

不然rar默認(rèn)會(huì)給你再次壓縮,部署到linux后項(xiàng)目就無(wú)法正常運(yùn)行。

再次壓縮后大小與未壓縮時(shí)不一致,所以會(huì)報(bào)錯(cuò)。

一定要選擇存儲(chǔ)方式復(fù)制或覆蓋到壓縮目錄

java解壓縮zip和rar的工具類

     
import java.io.File;    
import java.io.FileOutputStream;    
     
import org.apache.tools.ant.Project;    
import org.apache.tools.ant.taskdefs.Expand;    
     
import de.innosystec.unrar.Archive;    
import de.innosystec.unrar.rarfile.FileHeader;    
     
public class DeCompressUtil {    
   /**  
    * 解壓zip格式壓縮包  
    * 對(duì)應(yīng)的是ant.jar  
    */   
   private static void unzip(String sourceZip,String destDir) throws Exception{    
       try{    
           Project p = new Project();    
           Expand e = new Expand();    
           e.setProject(p);    
           e.setSrc(new File(sourceZip));    
           e.setOverwrite(false);    
           e.setDest(new File(destDir));    
           /*  
           ant下的zip工具默認(rèn)壓縮編碼為UTF-8編碼,  
           而winRAR軟件壓縮是用的windows默認(rèn)的GBK或者GB2312編碼  
           所以解壓縮時(shí)要制定編碼格式  
           */   
           e.setEncoding("gbk");    
           e.execute();    
       }catch(Exception e){    
           throw e;    
       }    
   }    
   /**  
    * 解壓rar格式壓縮包。  
    * 對(duì)應(yīng)的是java-unrar-0.3.jar,但是java-unrar-0.3.jar又會(huì)用到commons-logging-1.1.1.jar  
    */   
   private static void unrar(String sourceRar,String destDir) throws Exception{    
       Archive a = null;    
       FileOutputStream fos = null;    
       try{    
           a = new Archive(new File(sourceRar));    
           FileHeader fh = a.nextFileHeader();    
           while(fh!=null){    
               if(!fh.isDirectory()){    
                   //1 根據(jù)不同的操作系統(tǒng)拿到相應(yīng)的 destDirName 和 destFileName    
                   String compressFileName = fh.getFileNameString().trim();    
                   String destFileName = "";    
                   String destDirName = "";    
                   //非windows系統(tǒng)    
                   if(File.separator.equals("/")){    
                       destFileName = destDir + compressFileName.replaceAll("\\\\", "/");    
                       destDirName = destFileName.substring(0, destFileName.lastIndexOf("/"));    
                   //windows系統(tǒng)     
                   }else{    
                       destFileName = destDir + compressFileName.replaceAll("/", "\\\\");    
                       destDirName = destFileName.substring(0, destFileName.lastIndexOf("\\"));    
                   }    
                   //2創(chuàng)建文件夾    
                   File dir = new File(destDirName);    
                   if(!dir.exists()||!dir.isDirectory()){    
                       dir.mkdirs();    
                   }    
                   //3解壓縮文件    
                   fos = new FileOutputStream(new File(destFileName));    
                   a.extractFile(fh, fos);    
                   fos.close();    
                   fos = null;    
               }    
               fh = a.nextFileHeader();    
           }    
           a.close();    
           a = null;    
       }catch(Exception e){    
           throw e;    
       }finally{    
           if(fos!=null){    
               try{fos.close();fos=null;}catch(Exception e){e.printStackTrace();}    
           }    
           if(a!=null){    
               try{a.close();a=null;}catch(Exception e){e.printStackTrace();}    
           }    
       }    
   }    
   /**  
    * 解壓縮  
    */   
   public static void deCompress(String sourceFile,String destDir) throws Exception{    
       //保證文件夾路徑最后是"/"或者"\"    
       char lastChar = destDir.charAt(destDir.length()-1);    
       if(lastChar!='/'&&lastChar!='\\'){    
           destDir += File.separator;    
       }    
       //根據(jù)類型,進(jìn)行相應(yīng)的解壓縮    
       String type = sourceFile.substring(sourceFile.lastIndexOf(".")+1);    
       if(type.equals("zip")){    
           DeCompressUtil.unzip(sourceFile, destDir);    
        }else if(type.equals("rar")){    
            DeCompressUtil.unrar(sourceFile, destDir);    
        }else{    
            throw new Exception("只支持zip和rar格式的壓縮包!");    
        }    
    }    
}  

修改jar文件,重新打包

報(bào)錯(cuò)

Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/xxxx-0.0.1-SNAPSHOT.jar'
 at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:261)
 at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:247)
 at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:109)
 ... 4 more
Caused by: java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/xxxx-0.0.1-SNAPSHOT.jar'. It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file
 at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry(JarFile.java:287)
 at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:269)
 at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:258)
 ... 6 more
 
Socket error Event: 32 Error: 10053.
Connection closing...Socket close.

處理方案

方案一:

解壓jar文件

  • jar -xvf ./*.jar
  • jar -xf  jar文件

修改解壓后后的文件

重新打包

  • jar -cfM0 *.jar ./

方案二:

  • winrar或7zip添加文件的時(shí)候, 將選擇壓縮方式由"標(biāo)準(zhǔn)"改為存儲(chǔ)(Store)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

东至县| 武鸣县| 永吉县| 聂荣县| 孙吴县| 彭阳县| 双辽市| 沾益县| 湄潭县| 南开区| 静宁县| 突泉县| 新源县| 林州市| 遂昌县| 临洮县| 汶上县| 石柱| 白河县| 鄂尔多斯市| 岳西县| 武平县| 荆州市| 时尚| 磐石市| 珲春市| 镇康县| 汉寿县| 曲阳县| 祁门县| 开封县| 双桥区| 漯河市| 古田县| 高尔夫| 丹江口市| 北京市| 万州区| 长阳| 云龙县| 邵东县|