校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

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

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

現(xiàn)象描述:

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

java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3\hdf5.jar (系統(tǒng)找不到指定的文件。)
 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 (系統(tǒng)找不到指定的文件。)
......
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 (系統(tǒng)找不到指定的文件。)

項目環(huán)境說明

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

有問題的jar依賴關(guān)系

跟蹤分析

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

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

方法doScanClassPath(...)

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

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

  • 方法processURLs(...)

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

  • 方法process()

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

processManifest(jar, isWebapp, classPathUrlsToProcess)

  • 方法 processManifest

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

原因分析

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

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

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

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

到這里我們已經(jīng)將出現(xiàn)問題的原因弄清楚了,接下來我們考慮下怎么解決。

解決方案

方案一:

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

方案二:

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

方案三:

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

方案四

增加一下代碼設(shè)置不掃描Manifest文件。

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

總結(jié):

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

標(biāo)簽:張家界 洛陽 永州 滄州 玉樹 北京 松原 廊坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《tomcat加載jar異常問題的分析與解決》,本文關(guān)鍵詞  tomcat,加載,jar,異,常問,題的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《tomcat加載jar異常問題的分析與解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于tomcat加載jar異常問題的分析與解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩国产高清影视| xfplay精品久久| 久久综合视频网| 岛国av在线一区| 中文字幕日本不卡| 成人福利电影精品一区二区在线观看| 久久天堂av综合合色蜜桃网| 国产91精品久久久久久久网曝门| 中文字幕亚洲区| 欧美日韩国产高清一区| 国产一区二区在线电影| 亚洲欧洲av在线| 91精品国产91久久久久久最新毛片| 日韩vs国产vs欧美| 国产精品亲子乱子伦xxxx裸| 欧美日韩国产综合草草| 国产成人精品一区二区三区四区| 中文字幕在线不卡一区二区三区| 4438亚洲最大| 97精品久久久午夜一区二区三区 | 久久日韩粉嫩一区二区三区| 91猫先生在线| 国产成人免费av在线| 图片区小说区区亚洲影院| 国产婷婷色一区二区三区在线| 欧美日韩亚洲综合一区| av不卡在线观看| 国产精品原创巨作av| 免费观看日韩av| 午夜精品在线看| 国产精品福利影院| 精品久久久久99| 欧美一区二区啪啪| 在线播放91灌醉迷j高跟美女| 99久久99久久精品免费观看| 国产一区在线精品| 麻豆成人免费电影| 秋霞国产午夜精品免费视频| 最新国产精品久久精品| 国产精品天美传媒沈樵| 国产亚洲精品aa| 久久久久久99久久久精品网站| 8v天堂国产在线一区二区| 色老头久久综合| 91在线视频18| 成人激情午夜影院| 高清beeg欧美| 国产91在线观看丝袜| 狠狠色狠狠色合久久伊人| 蜜臀久久99精品久久久久久9| 天堂午夜影视日韩欧美一区二区| 一区二区三区精品视频在线| 国产精品久久久久影院亚瑟| 中文字幕不卡在线观看| 国产精品传媒入口麻豆| 亚洲免费观看视频| 亚洲国产色一区| 天天av天天翘天天综合网| 天涯成人国产亚洲精品一区av| 天天综合色天天综合色h| 亚洲成人免费视| 美腿丝袜亚洲三区| 国产精品一区二区91| 国产91富婆露脸刺激对白| av亚洲精华国产精华| 日本韩国精品一区二区在线观看| 欧美日韩一区二区三区在线| 91精品国产综合久久精品 | 欧美一区二区女人| 久久久99精品久久| 国产精品福利电影一区二区三区四区| **性色生活片久久毛片| 亚洲动漫第一页| 久久99精品视频| 99免费精品在线| 在线观看亚洲精品| 精品久久一区二区| 亚洲欧洲一区二区在线播放| 亚洲国产成人va在线观看天堂| 久久99热99| 91偷拍与自偷拍精品| 91麻豆精品国产自产在线| 久久亚洲综合av| 亚洲乱码中文字幕| 蜜臂av日日欢夜夜爽一区| 94色蜜桃网一区二区三区| 欧美成人猛片aaaaaaa| 一区二区三区中文字幕在线观看| 久久丁香综合五月国产三级网站| 99久久精品免费看国产免费软件| 91精品国产综合久久精品性色| 国产视频亚洲色图| 午夜精品成人在线视频| 国产福利一区二区三区在线视频| 在线精品观看国产| 国产精品私人自拍| 麻豆成人久久精品二区三区红| 99久久精品国产一区| 精品日韩在线观看| 偷窥国产亚洲免费视频| 色哟哟一区二区在线观看| 欧美一级午夜免费电影| 亚洲欧美色一区| 成人av在线电影| 欧美男同性恋视频网站| 久久精品人人做| 亚洲成年人影院| 色综合天天做天天爱| 欧美日韩精品一区二区三区四区| 日韩美女视频一区| 国产成人免费在线视频| 在线观看日韩国产| 亚洲欧美另类久久久精品2019 | 久久久久久99精品| 日本一道高清亚洲日美韩| 在线免费不卡电影| 亚洲精品免费在线观看| 成人黄色777网| 国产日产欧美一区二区视频| 久久成人免费电影| 日韩视频一区二区在线观看| 亚洲愉拍自拍另类高清精品| 91在线一区二区三区| 亚洲欧美另类在线| 99热精品一区二区| 国产精品久久久久久久久果冻传媒 | 精品国产91九色蝌蚪| 青青国产91久久久久久| 欧美欧美欧美欧美首页| 亚洲久本草在线中文字幕| 色综合久久中文综合久久97| 中文一区二区完整视频在线观看| 极品少妇xxxx偷拍精品少妇| 91精品国产综合久久国产大片| 日韩和的一区二区| 欧美一级免费观看| 免费人成精品欧美精品| 91精品国产手机| 国产精品456露脸| 国产精品久久久久天堂| 成人免费视频视频| 亚洲美女在线一区| 91精品国产综合久久久蜜臀粉嫩| 久久99国内精品| 国产精品丝袜一区| 欧美亚洲动漫另类| 精品一区二区在线视频| 国产欧美一区二区三区网站 | 日韩一区和二区| 国产综合色视频| 中文字幕一区在线观看视频| 欧美午夜一区二区三区| 蜜桃久久av一区| 中文字幕在线不卡国产视频| 欧美日韩精品欧美日韩精品一综合| 男人的j进女人的j一区| 日韩你懂的在线播放| 奇米色777欧美一区二区| 欧美大肚乱孕交hd孕妇| 国产成人综合自拍| 亚洲一区二区视频在线| 欧美电影免费提供在线观看| av在线不卡电影| 首页欧美精品中文字幕| 久久久一区二区三区捆绑**| 成人黄色电影在线 | 亚洲日本一区二区| 91精品在线免费| 国产剧情一区二区| 亚洲伊人色欲综合网| 欧美r级电影在线观看| 色综合天天综合色综合av| 亚洲综合男人的天堂| 欧美私模裸体表演在线观看| 97精品视频在线观看自产线路二| 欧洲一区二区三区免费视频| 亚洲午夜精品网| 久久青草欧美一区二区三区| 91视视频在线观看入口直接观看www | 日本视频在线一区| 国产日产欧美一区二区视频| 色菇凉天天综合网| 偷窥国产亚洲免费视频| 国产一区二区视频在线| 中文字幕一区二区三区蜜月| 欧美人动与zoxxxx乱| 国产麻豆精品在线观看| 亚洲妇熟xx妇色黄| 国产精品人成在线观看免费| 91国偷自产一区二区三区观看| 国产一区二区三区精品视频| 三级在线观看一区二区| 久久久国产精华| 欧美人与z0zoxxxx视频| 成人综合婷婷国产精品久久免费| 亚洲va韩国va欧美va精品| 中文字幕第一页久久| 亚洲精品一区在线观看| 欧美裸体bbwbbwbbw| 色av综合在线|