signer information does not match問題解決
From: http://blog.csdn.net/strawbingo/article/details/2474790
這兩天除錯程式,碰到了一個問題。程式在呼叫log4j列印日誌的時候碰到了如下的錯誤:
java.lang.ExceptionInInitializerError
at com.company.pub.util.config.ConfigFileHelper.getConfigProperties(ConfigFileHelper.java:60)
at com.company.team.bean.pub.common.Env.(Env.java:375)
at com.company.team.bean.pub.common.DBean.(DBean.java:114)
at com.company.team.bean.pub.common.DBean.main(DBean.java:565)
Caused by: java.lang.SecurityException: class "org.apache.log4j.PropertyConfigurator"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:611)
at java.lang.ClassLoader.defineClass(ClassLoader.java:532)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at com.company.team.bean.pub.common.Log.(Log.java:37)
... 4 more
一、網路搜尋解決辦法
在網上搜了兩天,問題結論很多:
1、是JAR包衝突所致,也就是說引了兩個相同的包(我的理解)。
2、LOG4J的jar包壞掉了,換一個新的,
3、MyEclipse6.0的BUG
4、JDK1.3的 BUG
雖然很多類似的帖子,但是沒有一個是在這個類上報錯的。我的問題很小眾。
二、分析並解決
我用的是MyEclipse5.0,JDK1.4所以下面兩項排除。
1、首先找個簡單的做,重新找了一個log4j-1.2.8.jar覆蓋,問題依舊。
再找一個試下log4j-1.2.5.jar,重新引入,恐怖的事情來了,重新引入eclipse要全部重新編譯一遍,
每次都耗費我近一個小時,CPU100%,什麼都做不了,鬱悶死我了。 更鬱悶的是問題還是沒有解決。
2、我的LIB裡面只引入了一個log4j-1.2.8.jar,不存在衝突的問題啊。搜尋org.apache.log4j.PropertyConfigurator
一樣只在log4j-1.2.8.jar包出現過一次。
已經不知道怎麼回事了,找出原來版本工程,經過幾個版本的嘗試,終於一個版本可以正確除錯。檢視引入的包,一
樣只有log4j-1.2.8.jar一個包,拷到有問題的工程裡,錯誤沒有解決。前幾天心血來潮把工程的JDK指向了1.4,難道
是JDK有問題?
3、切換問題工程的JDK,又是全編譯,唉。可問題還是依舊,FUCK。
4、所有的都排除了,問題就是出現在所引入的jar包上了,可以怎麼搜尋也之能找到一個PropertyConfigurator類。
好吧,本人還有笨方法,原諒我吧,我是不稱職的開發人員。將兩個工程的JAR包比對,發現問題工程裡面少了一些,
嘗試補充上去,全編譯-_-||,問題依舊。將原來的包備份,將所有的包覆蓋。哦,我的上帝,終於可以正常執行了。
問題到這裡並沒有完全結束,到底是哪個包導致的呢?
還是笨方法逐個包覆蓋,終於定位到問題的包。但是這個包的名字讓我很費解jftp.jar,沒什麼關係麼。看看裡面吧,
誰這麼沒人性,竟然裡面有org.apache.log4j完整的類目錄,誰放進去的啊,變態。更變態的是裡面的類不是全部的
類而只有部分,這也就是報org.apache.log4j.PropertyConfigurator而只能搜尋到一個的原因。
衝突可能是因為log4j首先呼叫了jftp.jar包中log4j用到的檔案,到呼叫PropertyConfigurator時候確實呼叫log4j-1.2.8.jar
中的類導致簽名衝突。
問題總算解決了,問題很小眾,也許對其他人沒有什麼幫助,因為很少有專案的前輩把jftp.jar變成這樣,無語。
遂寫此文,紀念我不放棄但是放棄時間的兩天。
這兩天除錯程式,碰到了一個問題。程式在呼叫log4j列印日誌的時候碰到了如下的錯誤:
java.lang.ExceptionInInitializerError
at com.company.pub.util.config.ConfigFileHelper.getConfigProperties(ConfigFileHelper.java:60)
at com.company.team.bean.pub.common.Env.
at com.company.team.bean.pub.common.DBean.
at com.company.team.bean.pub.common.DBean.main(DBean.java:565)
Caused by: java.lang.SecurityException: class "org.apache.log4j.PropertyConfigurator"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:611)
at java.lang.ClassLoader.defineClass(ClassLoader.java:532)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at com.company.team.bean.pub.common.Log.
... 4 more
一、網路搜尋解決辦法
在網上搜了兩天,問題結論很多:
1、是JAR包衝突所致,也就是說引了兩個相同的包(我的理解)。
2、LOG4J的jar包壞掉了,換一個新的,
3、MyEclipse6.0的BUG
4、JDK1.3的 BUG
雖然很多類似的帖子,但是沒有一個是在這個類上報錯的。我的問題很小眾。
二、分析並解決
我用的是MyEclipse5.0,JDK1.4所以下面兩項排除。
1、首先找個簡單的做,重新找了一個log4j-1.2.8.jar覆蓋,問題依舊。
再找一個試下log4j-1.2.5.jar,重新引入,恐怖的事情來了,重新引入eclipse要全部重新編譯一遍,
每次都耗費我近一個小時,CPU100%,什麼都做不了,鬱悶死我了。 更鬱悶的是問題還是沒有解決。
2、我的LIB裡面只引入了一個log4j-1.2.8.jar,不存在衝突的問題啊。搜尋org.apache.log4j.PropertyConfigurator
一樣只在log4j-1.2.8.jar包出現過一次。
已經不知道怎麼回事了,找出原來版本工程,經過幾個版本的嘗試,終於一個版本可以正確除錯。檢視引入的包,一
樣只有log4j-1.2.8.jar一個包,拷到有問題的工程裡,錯誤沒有解決。前幾天心血來潮把工程的JDK指向了1.4,難道
是JDK有問題?
3、切換問題工程的JDK,又是全編譯,唉。可問題還是依舊,FUCK。
4、所有的都排除了,問題就是出現在所引入的jar包上了,可以怎麼搜尋也之能找到一個PropertyConfigurator類。
好吧,本人還有笨方法,原諒我吧,我是不稱職的開發人員。將兩個工程的JAR包比對,發現問題工程裡面少了一些,
嘗試補充上去,全編譯-_-||,問題依舊。將原來的包備份,將所有的包覆蓋。哦,我的上帝,終於可以正常執行了。
問題到這裡並沒有完全結束,到底是哪個包導致的呢?
還是笨方法逐個包覆蓋,終於定位到問題的包。但是這個包的名字讓我很費解jftp.jar,沒什麼關係麼。看看裡面吧,
誰這麼沒人性,竟然裡面有org.apache.log4j完整的類目錄,誰放進去的啊,變態。更變態的是裡面的類不是全部的
類而只有部分,這也就是報org.apache.log4j.PropertyConfigurator而只能搜尋到一個的原因。
衝突可能是因為log4j首先呼叫了jftp.jar包中log4j用到的檔案,到呼叫PropertyConfigurator時候確實呼叫log4j-1.2.8.jar
中的類導致簽名衝突。
問題總算解決了,問題很小眾,也許對其他人沒有什麼幫助,因為很少有專案的前輩把jftp.jar變成這樣,無語。
遂寫此文,紀念我不放棄但是放棄時間的兩天。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-1083722/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ValueError: Length of values (141) does not match length of index (4278)問題的解決ErrorIndex
- Java問題解決:Java compiler level does not match the version of the installed Java project facet.JavaCompileProject
- python問題unindent does not match any outer indentation level在pycharm平臺的解決方法PythonPyCharm
- ORA-24756: transaction does not exist問題解決
- Library source does not match the bytecode for class 最佳解決方案
- 解決Sentinel module java.base does not “opens java.lang“ 問題Java
- 解決「問題」,不要解決問題
- git中出現”the requested upstream branch ‘origin/master‘ does not exist“問題的解決GitAST
- 解決Spark讀取Hive分割槽表出現Input path does not exist的問題SparkHive
- ORA-01861: literal does not match format stringORM
- 解決問題
- 發現問題,解決問題
- CF466E Information Graph 題解ORM
- Laravel Class env does not exist 問題排查Laravel
- Load balancer does not contain an instance for the service service-B [503] during [POST] 問題解決AI
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- '+CRS' in '/etc/oracle/ocr.loc' and '/dev/raw/raw1' does not matchOracledev
- 提問題比解決問題更重要
- SERVICE問題解決方法
- 解決高度塌陷問題
- qeephp 解決跨越問題PHP
- bg配置問題解決
- git ssl 問題解決Git
- AIX問題解決思路AI
- WAS startnode hang問題解決
- 解決grub rescue問題
- 解決跨域問題跨域
- MYSQL(解決方法):Client does not support authentication(轉)MySqlclient
- 解決react-native run-ios報錯問題--Print: Entry, ":CFBundleIdentifier", Does Not ExistReactiOSIDE
- Ubuntu 16.04 Vysor 破解 和黑屏問題解決+ 閃屏問題解決Ubuntu
- Python執行報錯IndentationError: unindent does not match any outer indentation levelPythonError
- 【問題解決】單機搭建dataguard的問題
- 解決 Github 國內訪問問題Github
- 解決github訪問慢的問題Github
- 解決 github 訪問不了的問題Github
- `QtValidLicenseForCoreModule' does not name a type 錯誤的解決QTREM