根据文档配置搭建spring-cloud的配置中心,运行成功,但访问配置文件时出现以下错误:
2016-10-12 17:26:52.482 ERROR 652 --- [nio-8040-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException] with root cause
java.lang.ClassNotFoundException: com.jcraft.jsch.JSchException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_101]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_101]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_101]
at org.eclipse.jgit.transport.Transport.(Transport.java:114) ~[org.eclipse.jgit-3.5.3.201412180710-r.jar:3.5.3.201412180710-r]
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:120) ~[org.eclipse.jgit-3.5.3.201412180710-r.jar:3.5.3.201412180710-r]
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:178) ~[org.eclipse.jgit-3.5.3.201412180710-r.jar:3.5.3.201412180710-r]
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:125) ~[org.eclipse.jgit-3.5.3.201412180710-r.jar:3.5.3.201412180710-r]
at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.cloneToBasedir(JGitEnvironmentRepository.java:282) ~[spring-cloud-config-server-1.1.2.RELEASE.jar:1.1.2.RELEASE]
at org.springframework.cloud.config.server.environment.JGitEnvironmentR
错误非常明显,缺少JSchException这个类,定位到eclipse的maven依赖里找,发现有这个类。去mavn仓库里找,发现.m2\repository\com\jcraft\jsch\0.1.50这个文件夹里有一些临时文件。
把他们都删除,重新build一下工程,重启,访问,问题解决了。
这个问题其实是很典型的Maven仓库问题,因为之前下载这个jar包的时候出现中断现象,到时jar包下载不完全。而在启动时没有报错,运行时报错,说明这个类是懒加载的。