婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > tomcat加載jar異常問題的分析與解決

tomcat加載jar異常問題的分析與解決

熱門標簽:東莞人工智能電銷機器人供應商 百度地圖標注要不要錢 廣州電銷機器人系統圖 高德地圖標注無營業執照 賀州市地圖標注app 長沙開福怎么申請400電話 江蘇電銷外呼防封系統是什么 智能電話機器人線路 金融行業外呼線路

現象描述:

項目使用springboot啟動一個web項目,在啟動階段看到console中出現了異常“1.10.3-1.4.3\hdf5.jar  系統找不到指定的文件”,雖然這些異常不影響項目的正常運行,但作為一個嚴謹的技術人員,看到這些異常就像見到仇人一樣,一定要除之而后快。

java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3\hdf5.jar (系統找不到指定的文件。)
 at java.util.zip.ZipFile.open(Native Method)
 at java.util.zip.ZipFile.<init>(ZipFile.java:225)
 at java.util.zip.ZipFile.<init>(ZipFile.java:155)
 at java.util.jar.JarFile.<init>(JarFile.java:166)
 at java.util.jar.JarFile.<init>(JarFile.java:130)
 at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:188)
 at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65)
 at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49)
 at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:374)
 at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:309)
 at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:266)
 at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:229)
 at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262)
 at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104)
 at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5204)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
 at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
 at java.util.concurrent.FutureTask.run(FutureTask.java)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)

2019-03-29 18:09:08.303 WARN 16940 --- [ost-startStop-1] o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/D:/.m2/repository/org/bytedeco/javacpp-presets/hdf5-platform/1.10.3-1.4.3/hdf5-linux-x86.jar] from classloader hierarchy

java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3\hdf5-linux-x86.jar (系統找不到指定的文件。)
......
2019-03-29 18:09:08.578 WARN 16940 --- [ost-startStop-1] o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/D:/.m2/repository/org/bytedeco/javacpp-presets/hdf5-platform/1.10.3-1.4.3/hdf5-linux-x86_64.jar] from classloader hierarchy

java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3\hdf5-linux-x86_64.jar (系統找不到指定的文件。)

項目環境說明

  • tomcat:使用springboot內置版本 8.5.29
  • 使用Maven進行依賴管理
  • spring boot 版本為2.0.1
  • spring 框架 版本為5.0.5
  • 項目引用了Deep Learn 4 Java(一個非常棒的Java的機器學習庫)
 <dependency>
 <groupId>org.deeplearning4j</groupId>
 <artifactId>deeplearning4j-core</artifactId>
 <version>1.0.0-beta3</version>
 </dependency>

有問題的jar依賴關系

跟蹤分析

既然是在啟動階段報錯,那就找到啟動類添加斷點,一步步跟蹤下到底哪個階段報的錯誤,然后再分析出錯的原因。我跟蹤調試了springboot的代碼,找到jar的加載位置。主要的幾個類和方法如下所示:

跟蹤類org.apache.tomcat.util.scan.StandardJarScanner

方法doScanClassPath(...)

該方法會對所有classloader進行遍歷,加載每一個classloader中jar包

上圖標紅處就是關鍵代碼,其中變量classPathUrlsToProcess中存放的是所有待加載的jar信息,主要是jar包路徑信息,我們可以看到這里面和我們在maven中看到的jar包是一樣的。

  • 方法processURLs(...)

該方法會對當前classloader的所有jar,也就是對classPathUrlsToProcess進行堆棧操作,然后處理每一個jar包。關鍵代碼如下所示。

  • 方法process()

該方法會對每一個jar進行加載及分析處理,該方法中重點關注

processManifest(jar, isWebapp, classPathUrlsToProcess)

  • 方法 processManifest

該方法會處理jar中的Manifest文件,對Manifest文件中的Class-Path進行分隔處理,對其中的內容作為新的依賴jar再插入到classPathUrlsToProcess中(processURLs方法會按照堆棧結果加載其中的jar)

原因分析

其實問題就是出Manifest文件中的classpath,通過分析代碼我們知道tomcat除了加載了我們maven管理的jar包之外,還會對jar中的manifest文件進行分析,如果其中存在classpath,他會將其中的內容也添加jar包依賴中,并對這些jar包進行加載。

我們打開其中hdf5-1.10.3-1.4.3.jar的manifest文件作為例子看看錯誤出在哪里。

大家注意到了沒有,這里的jar包沒有路徑也沒有版本號,這就導致tomcat加載的時候按照hdf5-1.10.3-1.4.3.jar的路徑進行加載。

然而我們的工程中在對應位置并不存在這些jar,這也就導致了找不到jar的異常。我們工程中實際上有這些jar,只不過路徑和名字不一樣。在上圖左邊大家可以看到maven中其實已經有了這些jar,只不過名字后面多了版本號,路徑在各自的maven倉庫中。

到這里我們已經將出現問題的原因弄清楚了,接下來我們考慮下怎么解決。

解決方案

方案一:

刪除Manifest中的classpath或者刪除Manifest文件,這樣就避免了加載不存在的jar包。但是每次maven更新的時候可能會覆蓋掉你的修改,導致異常再次出現。

方案二:

按照加載提示的路徑,將對應jar包復制過去并改名去掉版本號,但這樣會造成jar冗余,同樣的jar會加載兩個。

方案三:

降級tomcat版本,使用8.5.0 或以下版本。8.5.0版本中不會對manifest進行分析加載,這樣也就不會出現我們的異常了。

方案四

增加一下代碼設置不掃描Manifest文件。

 @Bean
 public TomcatServletWebServerFactory tomcatFactory() {
  return new TomcatServletWebServerFactory() {
   @Override
   protected void postProcessContext(Context context) {
    ((StandardJarScanner) context.getJarScanner()).setScanManifest(false);
   }
  };
 }

總結:

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

標簽:張家界 洛陽 永州 滄州 玉樹 北京 松原 廊坊

巨人網絡通訊聲明:本文標題《tomcat加載jar異常問題的分析與解決》,本文關鍵詞  tomcat,加載,jar,異,常問,題的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《tomcat加載jar異常問題的分析與解決》相關的同類信息!
  • 本頁收集關于tomcat加載jar異常問題的分析與解決的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久国产三级精品| 成人夜色视频网站在线观看| 亚洲成a人片综合在线| 97久久精品人人做人人爽50路| 国产日韩影视精品| 国产成人精品亚洲777人妖| 精品国产一区二区三区不卡 | wwwwww.欧美系列| 免费在线观看一区| 欧美大片在线观看| 国产成人一级电影| 一区二区三区四区高清精品免费观看| 欧美在线免费播放| 久久精品国产在热久久| 亚洲精品视频免费观看| www.爱久久.com| 亚洲风情在线资源站| 91麻豆精品国产91久久久更新时间 | 欧美精品一区二| 成人午夜电影网站| 一区二区三区免费看视频| 欧美一区二区视频观看视频| 国产成人亚洲精品狼色在线| 亚洲欧洲一区二区三区| 欧美日韩国产区一| 成人av在线电影| 日韩精品电影一区亚洲| 久久久久国产一区二区三区四区 | 欧美性猛交xxxx乱大交退制版| 婷婷中文字幕综合| 国产精品理伦片| 91精品国产91热久久久做人人| 成年人国产精品| 蜜桃av一区二区| 亚洲一区二区三区激情| 亚洲国产精品v| 欧美一区二区三区视频免费| 高清成人免费视频| 亚洲成人免费观看| 国产精品久久久久久久蜜臀| 欧美妇女性影城| 91久久精品一区二区三区| 国产在线视频不卡二| 三级欧美在线一区| 国产精品久久久久久久久搜平片| 日韩午夜av电影| 欧美视频一区在线| 91黄色激情网站| 色婷婷狠狠综合| av亚洲产国偷v产偷v自拍| 国产馆精品极品| 国产精品996| 国产精品一区二区三区四区| 青青草原综合久久大伊人精品优势| 玉足女爽爽91| 一区二区三区 在线观看视频| 亚洲国产精品二十页| 欧美国产精品中文字幕| 久久女同精品一区二区| 精品国产青草久久久久福利| 91精品国产一区二区| 欧美色成人综合| 欧美精品粉嫩高潮一区二区| 色哟哟亚洲精品| 韩国女主播一区二区三区| 免费成人在线影院| 偷窥国产亚洲免费视频| 老司机精品视频导航| 日本中文字幕一区| 亚洲综合一区二区| 亚洲一区二区三区精品在线| 专区另类欧美日韩| 国产69精品久久久久777| 久草在线在线精品观看| 美女视频一区在线观看| 轻轻草成人在线| 国产曰批免费观看久久久| 国产在线一区二区综合免费视频| 国产老女人精品毛片久久| 国产精品一二三四五| 成人激情文学综合网| 91麻豆免费看| 欧美日本一区二区| 久久精品日产第一区二区三区高清版| 国产亚洲美州欧州综合国| 亚洲国产高清在线观看视频| 亚洲免费观看在线视频| 日韩精品欧美精品| 成人激情av网| 欧美性做爰猛烈叫床潮| 欧美mv日韩mv国产网站app| 国产精品卡一卡二| 日韩中文字幕亚洲一区二区va在线| 日本最新不卡在线| 岛国精品一区二区| 欧美精品在线一区二区三区| 久久―日本道色综合久久| 一区av在线播放| 国产一区二区在线影院| 色先锋aa成人| 久久亚洲精华国产精华液| 一区二区三区在线免费视频| 国产一区二区在线看| 欧美日产在线观看| 最新日韩av在线| 国产最新精品免费| 3d动漫精品啪啪| 亚洲美女电影在线| 国产91综合一区在线观看| 欧美电影影音先锋| 亚洲视频免费观看| 国产成人亚洲精品青草天美| 欧美一级二级三级蜜桃| 一区2区3区在线看| 91在线视频播放地址| 国产女人水真多18毛片18精品视频 | 日韩美女视频在线| 亚洲国产精品嫩草影院| 91在线观看一区二区| 久久午夜色播影院免费高清| 三级亚洲高清视频| 欧美日韩一区二区三区在线| 亚洲欧洲性图库| 国产成人鲁色资源国产91色综| 6080午夜不卡| 亚洲v中文字幕| 91黄色激情网站| 一二三四区精品视频| 91啪亚洲精品| 综合婷婷亚洲小说| 成人18视频日本| 亚洲欧洲成人自拍| 福利电影一区二区| 国产欧美日韩一区二区三区在线观看| 九色综合狠狠综合久久| 欧美大片日本大片免费观看| 毛片不卡一区二区| 亚洲午夜激情av| 欧美剧情片在线观看| 日本在线观看不卡视频| 日韩一区二区三区在线观看| 蜜臀av一级做a爰片久久| 欧美xxxx老人做受| 国产乱码精品一区二区三区忘忧草| 精品福利二区三区| 久久99国产精品免费网站| 精品人伦一区二区色婷婷| 麻豆成人av在线| 久久日一线二线三线suv| 成人一区二区三区视频| 亚洲精品久久久蜜桃| 欧美人与z0zoxxxx视频| 免费成人av资源网| 精品精品欲导航| 国产在线精品国自产拍免费| 国产日韩欧美不卡| 91在线观看成人| 日韩av网站在线观看| 国产日韩v精品一区二区| 色婷婷亚洲精品| 美女尤物国产一区| 国产精品久久久久久久久图文区| 欧美午夜视频网站| 国产综合色在线视频区| 亚洲人成影院在线观看| 日韩三级伦理片妻子的秘密按摩| 成人爽a毛片一区二区免费| 亚洲成人你懂的| 国产婷婷色一区二区三区| 色婷婷久久综合| 激情六月婷婷综合| 亚洲影视在线播放| 国产日本一区二区| 欧美日韩一区在线| 国产精品综合视频| 亚洲在线视频一区| 欧美国产在线观看| 91精选在线观看| 色一区在线观看| 国产一区二区三区在线看麻豆| 亚洲欧洲精品一区二区三区| 精品视频一区三区九区| 国产91精品久久久久久久网曝门| 18欧美乱大交hd1984| 欧美一区二区高清| 不卡一区二区中文字幕| 免费av网站大全久久| 国产精品大尺度| 国产亚洲一区二区在线观看| 欧美日韩一区二区三区不卡| 97aⅴ精品视频一二三区| 午夜久久久久久久久 | 8v天堂国产在线一区二区| 狠狠色丁香婷综合久久| 日韩av一区二区三区| 亚洲一二三四区| 国产欧美一区视频| 精品免费视频.| 欧美挠脚心视频网站| 色综合久久久久综合体|