SmartGWT 之 builtinTypes.xml 找不到的异常

这个异常,我碰到了两次。第一次是刚开始用SmartGWT的时候,碰到这个异常。

当时没多想,刷新了几次就可以了。现在想来,是因为SmartGWT启动的时候,会

自动的将它的资源展开,其中就包含 builtinTypes.xml。而因为我使用 eclipse开发,

这些自动展开的资源,并没有被刷新进eclipse。所以,当我下一次启动eclipse的时候,

eclipse会认为这些资源不存在。好解决,刷新一下eclipse就ok了。

 

第二次碰到这个异常,是昨天。根据经验主义,又认为是老问题。虽然也有点奇怪,明明

没有更新smartgwt,为啥它也会出现这种问题。于是删了那个目录,再刷新,还是不行。

还是不服气,于是又不停的折腾eclipse,最终也没搞出什么明堂来。

 

今天早上,冷静了一下,开始考虑这次异常的问题。

 

Problem loading builtinTypes.xml
Exception when loading from __USE_CONTAINER__/pim8/sc/system/schema/builtinTypes.xml:
java.lang.NullPointerException
	at com.isomorphic.io.ISCFile.<init>(ISCFile.java:145)
	at com.isomorphic.store.ProcessedFileCache.getObjectFromFile(ProcessedFileCache.java:135)

 

这次的异常和上次没有区别。不过看一下上下文,发现它出现的位置是在spring 的初始化当中

出现的。然后才开始出现 smartgwtee 自己的初始化。正好,昨天做了一个 spring 的bean,

然后又把这个bean从 BasicDataSource继承下来。而在启动的时候,spring首先启动,它自动

扫描所有的bean,发现了我的这个 DataSource,然后试图去装载它。在装载这个DataSource

的时候,SmartGwtEE被激活了。这个时候,servlet container还没有起来,它自然不能利用

servlet API去自动寻找到webroot。根据server.properties里面的说明,如果不能 auto detect

的话,它就会去找 __USE_CONTAINER__,而这个是没有设置的。所以,根本就不可能找到相应的

builtinTypes.xml,从而导致后面一系列的错误。所以,如果想用 spring-dmi,就不要把 datasource

之类的东西牵扯进来。

 

至于说有没有办法让 spring 在 smartgwtee之后启动起来,其实也是有的,只要把 spring 的

ContextLoaderListener 改成还是使用 ContextLoaderServlet 就可以了。这样,就算是

spring 先装载那个bean,也是在 servlet container完成之后做的。这个时候,相当于是在

spring 里面触发了 smartgwtee 的启动。

你可能感兴趣的:(eclipse,spring,xml,bean,servlet)