1. 程式人生 > >java web程式放linux上報錯java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName

java web程式放linux上報錯java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName

java web程式放linux上報錯

java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.forName(Ljava/lang/String;)Ljava/lang/Class;
	at org.springframework.web.context.ContextLoader.determineContextClass(ContextLoader.java:278)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:233)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4753)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5215)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1141)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)

在windows機器上執行時,並不會報錯,部署到linux伺服器卻報錯

解決方案:

查詢lib包,看是否有重複,一般這樣的情況發生都是匯入了同樣的包導致的,檢視包重複的時候要仔細,因為有的包滿意版本,可能還需要解壓來看版本等資訊,刪除重複的包,就可以了,

親測,我的專案中有2個同樣的spring.jar 一個有版本,一個滿意版本的,刪除spring.jar,就可以了。