有一个Java的SSH项目,在win系统上可以正常运行,但到了Ubuntu上就不行。查看了Tomcat的启动信息,说是bean找不到。实际上bean是有的,只是顺序有先后。类似这样的:
<bean id="customerLogic">
<property name="dao" ref="customerDao"/>
</bean><bean id="customerDao">
</bean>就是前面的bean(customerLogic)引用了后面定义的bean(customerDao)。在Ubuntu上查看Tomcat的日志,提示customerDao这个bean找不到。bean的加载顺序和定义的先后顺序有关?或者和Tomcat有关?抑或者和系统(win/Ununtu)有关?WinXp Tomcat-5.5.20
Ubuntu 11 Tomcat-5.5.33
<bean id="customerLogic">
<property name="dao" ref="customerDao"/>
</bean><bean id="customerDao">
</bean>就是前面的bean(customerLogic)引用了后面定义的bean(customerDao)。在Ubuntu上查看Tomcat的日志,提示customerDao这个bean找不到。bean的加载顺序和定义的先后顺序有关?或者和Tomcat有关?抑或者和系统(win/Ununtu)有关?WinXp Tomcat-5.5.20
Ubuntu 11 Tomcat-5.5.33
我修改了日志信息里提到的bean,把它放到了前面(在调用之前定义)但是重启后,这个bean不报错了,又有其他的bean说是找不到,我看了一下,同样的问题:在定义之前调用了在bean的配置文件里,先使用,再定义的情况可多,我不想一个一个地去修改。有什么解决方法吗?
注意空格之类的 细心点
本来就用了好多的xml文件。几乎所有的bean文件都是按 action——》logic——》dao的顺序定义的。按你说的,改动有点大
和这些没关系。在WinXP下是完全正常的。然后是完全复制到Ununtu上的
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
改成:<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
但是我们系统系统里用的Listener在Spring自带的那个Listener上有封装了一层,又加了一些初始化的操作。如果直接改成上面说的Spring自带的Servlet,系统启动就报错(WinXP下)我又看了一下ContextLoaderServlet和ContextLoaderListener的区别。说是Listener要servlet2.3版本以上的才可以使用。我在Ununtu上用的Tomcat5.5,看它的文档,都继承servlet2.4了……搞不懂了就
我换了Tomcat6试了下,异常变了,不是前面提到的异常——Error listenerStart网上查了一下,有人说:把文件commons-logging.jar 从1.1 版本替换到1.0.4版本.
但是我试了还是不行