錯誤:java.lang.IllegalArgumentException非法論據異常,也可稱為非法形參異常。argument不是參數的意思,是爭吵,爭論;論據,經常用args用作形參。
在SSM動態javaweb服務器框架中,經常看到這個異常,很多人說這是參數異常,檢查自己在ioc容器中配置的參數是否正確,其實這是項目使用的Java編譯器(即Javacompiler)使用的jdk版本和Java的運行環境(即jreJavaruntimeenvironment)版本不匹配造成的。
如果jdk使用的是1.7,jre使用的是1.8,就會出現這壹異常。即使是低版本的編譯器,高版本的運行環境,也會出現這壹異常。
解決方法如下:
第壹:修改Java compiler和jre
1、在eclipse-window-preference-java的裏面的installed JREs和Compiler
2、Compiler就是修改編譯器的Installed JREs就是改變運行環境。按道理說只要jre的版本高於jdk(即Compiler)的版本,就能運行,因為高版本環境兼容低版本程序。但並不是的,jdk1.8的修改很大,就算前高後低,仍舊派出這個異常。所以我們都把他們修改成1.7版本。
Compiler改成1.7。按下圖改成1.7,然後右下角apply就行了。
3、修改jre為1.7,看下圖,電腦裏裝了三個jdk版本,選擇jdk1.7,然後spply就行了。
第二:修改tomcat服務容器的JRE
1、因為tomcat是基於java編寫的服務容器,所以它是需要java運行環境的。其實這個更容易開發人員忽略,但是這個更重要,因為動態web工程最終是在tomcat裏面運行的,而tomcat的運行jre直接決定web工程的jre,而上面配置的就直接沒用了,因為用到tomcat了,是web工程,不是純java工程。
修改tomcat的jre,window-Preferences-Server-Runtime Environments ,電腦裏裝了兩個tomcat容器壹個7,壹個9,選擇壹個然後Edit。
2、Edit就是配置的意思,及配置這個選中的tomcat。下面就是配置界面,選擇jdk1.7,然後Finish就就ok了。這樣,java.lang.IllegalArgumentException問題就得到了成功解決。