ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uriBrokerService': Cannot create inner bean '(inner bean)' of type [com.alibaba.citrus.service.uribroker.impl.URIBrokerServiceImpl$URIBrokerInfo] while setting bean property 'brokers' with key [0]; nested excepti
on is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#25': Cannot create inner bean 'server' of type [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker] while setting constructor argument; nested exception is org.springframework.beans.fact
ory.BeanCreationException: Error creating bean with name 'server': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType'
is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:287)
网上找了帖子,发现是由于jdk版本的问题,我本地的java环境变量是1.8.具体的详见:
https://github.com/alibaba/dubbo/issues/50 写得很详细(侵权删)。我就不多说,知道原因之后,开始解决本地问题。
场景:
jdk: 本地安装了jdk1.7和1.8,但是整体环境变量是jdk1.8
zookeeper:zookeeper-3.4.9
tomcat:tomcat6和tomcat7都有
运行:刚开始借助网上的教程都直接用tomcat启动dubbo-admin的war包。
尝试方式一:
指定tomcat使用jdk1.7(本地系统环境JAVA_HOME依旧是1.8)-启动管理后台异常
修改本地环境JAVA_HOME为1.8 -启动dubbo管理后台ok
尝试方式二:
修改tomcat的jdk版本:找到tomcat/bin下面的catalina.bat脚本(linux下修改.sh脚本)
将里面的JAVA_HOME和JRE_HOME设置为本地1.7的路径。
echo Using CATALINA_BASE: "%CATALINA_BASE%"
echo Using CATALINA_HOME: "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
if ""%1"" == ""debug"" goto use_jdk
echo Using JRE_HOME: "%JRE_HOME%"
goto java_dir_displayed
:use_jdk
echo Using JAVA_HOME: "%JAVA_HOME%"
:java_dir_displayed
echo Using CLASSPATH: "%CLASSPATH%"
echo Using CATALINA_HOME: "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
if ""%1"" == ""debug"" goto use_jdk
echo Using JRE_HOME: "%JRE_HOME%"
goto java_dir_displayed
:use_jdk
echo Using JAVA_HOME: "%JAVA_HOME%"
:java_dir_displayed
echo Using CLASSPATH: "%CLASSPATH%"
但是没有效果,应该还是有某个地方没有改完全,作为遗留问题,不作为此次核心问题研究。
尝试方式三:
使用Intellij idea直接运行dubbo-admin源码,在idea配置运行信息,通过指定运行jdk信息,可以在不改变环境变量的情况下直接使用jdk1.7:
最终ok,当然,最优解决办法就是通过idea运行。
未输入密码时,出现上图。
访问localhost:8080/dubbo提示输入账号密码
根据提示输入之后:
问题算是完美解决。学习一个新东西不能懒惰,而我,恰恰是很懒的一个人。
前几天看dubbo.io的网站突然变了风格了,我怀疑我是不是网址输错了,是一个山寨的dubbo网站,后来才确定没有走错,dubbo官方已经开始更新了。不过我好像更喜欢之前的风格(怀旧^_^)