**
weblogic查看補丁版本時報錯: java.lang.NoClassDefFoundError,java.lang.ClassNotFoundException
**
問題詳情
打補丁前,先查看目前的weblogic補丁版本
[weblogic@host bsu]$./bsu.sh -prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3 -status=applied -verbose -view
Exception in thread "Main Thread" java.lang.NoClassDefFoundError: com/bea/plateng/patch/Patch
Caused by: java.lang.ClassNotFoundException: com.bea.plateng.patch.Patch
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: com.bea.plateng.patch.Patch. Program will exit.
排查過程
通過查看MANIFEST.MF文件發現了這麼一行:
Class-Path: …/…/modules/features/com.bea.cie.patch-client_3.3.0.0.jar
下面,我們來尋找這個jar 包。
[weblogic@host features]$ pwd
/home/weblogic/Oracle/Middleware/modules/features
[weblogic@host features]$
[weblogic@host features]$ ll | grep com.bea.cie.patch-client_3.3.0.0.jar
[weblogic@host features]$
這裏要注意的是,不同的環境,可以路徑不同,但 “modules/features” 是不變的。
同時,也發現其他weblogic服務器上存在的jar包,這臺服務器上沒有。好了,問題已經找到了,打補丁所依賴的jar包的缺失 最終導致了 java.lang.NoClassDefFoundError報錯 和 java.lang.ClassNotFoundException報錯。
解決方案
通過對比發現,不同的weblogic主機,同一個jar包,雖然名稱一樣,但是包的sha256不同。
爲安全起見,解決方案是做好備份,重裝weblogic ,哈哈。
希望拋磚引玉,大家有更好的解決方案歡迎留言!
寫於 July 27, 2019,修改於July 28, 2019