GAE SDK 开发启动遇到 FactoryConfigurationError:SAXParserFactoryImpl could not be instantiated: NullPointer...

以前遇到过,去网上搜索了一下有很多这样的问题但都没有解决。我的这个gae的sdk是从eclipse插件中拿出来的所以不知道会不会因为这样的问题,所以准备再下载一个新的sdk试一下的说。再等等看看能不能把这个解决掉。

 --09/29

经过一上午的苦苦需找,终于找到了一点点线索,原来是JDK 6的一个bug,换了一个jdk就好了, bug see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6350682

有些不好的事情都已经过去了也就不想再提了,比如说这次解决问题的经历。确实走了不少弯路,但是在刨根问底的时候发现自己的技术也是相当的薄弱。在看jdk中的代码的时候甚至有些类都没见过,还要重新去看这个类究竟是干什么的。当然同过这次找问题的过程,我也发现了找问题所用的方式和思路都太过死板,其实找这个错误时显而易见的,但是当初我却很痛苦找不到可以解决的办法。

这个东西也是在午饭过后才找出来的,所以如果一个问题是在是没有头绪可以暂且放一放,说不定哪一天做梦也就把问题解决了。

 

最好还是稍微总结一下吧。依据先人对这个bug的描述,并且找到了一个always reproduce 的步骤,就是 执行了这一句话

Thread.currentThread().setContextClassLoader(null);

这个是google api做的或者是jetty做的不得而知,但是如果做了就会出现这样的问题。同过代码发现classloader的获取过程是这样的,

ClassLoader classLoader = ss.getContextClassLoader();

if (classLoader == null) {

// if we have no Context ClassLoader
// so use the current ClassLoader
   classLoader = FactoryFinder.class.getClassLoader();
}

但是这两次获取都没有得到,由此可以说明,如果执行了

Thread.currentThread().setContextClassLoader(null);
那么就连FactoryFinder.class.getClassLoader();也拿不到classLoader了? 我实验了一下但是没有成功,自己的技术还是太薄弱了,只知道用更深层次的东西就不知道了,比如进程,线程。 这是我测试的程序。

public class SaxParser {

    public static void main(String[] args) {
            Thread.currentThread().setContextClassLoader(null);
            System.out.println(SaxParser.class.getClassLoader());
    }

}

 

又被打击了。。。。 

 

 

 

 下面是原始的错误:

Initializing App Engine server
2012-9-28 6:43:36 com.google.apphosting.utils.jetty.JettyLogger info
信息: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
2012-9-28 6:43:37 com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
信息: Successfully processed E:\ws_rcp\testtest\war\WEB-INF/appengine-web.xml
2012-9-28 6:43:37 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
信息: Successfully processed E:\ws_rcp\testtest\war\WEB-INF/web.xml
2012-9-28 6:43:38 com.google.apphosting.utils.jetty.JettyLogger warn
警告: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@1e6a413{/,E:\ws_rcp\testtest\war}: javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl could not be instantiated: java.lang.NullPointerException
2012-9-28 6:43:39 com.google.apphosting.utils.jetty.JettyLogger warn
警告: failed JettyContainerService$ApiProxyHandler@14aa005: javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl could not be instantiated: java.lang.NullPointerException
2012-9-28 6:43:39 com.google.apphosting.utils.jetty.JettyLogger warn
警告: Error starting handlers
javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl could not be instantiated: java.lang.NullPointerException
    at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:134)
    at org.mortbay.xml.XmlParser.<init>(XmlParser.java:69)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.webXmlParser(WebXmlConfiguration.java:83)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.<init>(WebXmlConfiguration.java:78)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:506)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at org.mortbay.jetty.webapp.WebAppContext.loadConfigurations(WebAppContext.java:858)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:430)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:197)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:241)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:148)
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
    at com.google.gwt.dev.DevMode.main(DevMode.java:311)
2012-9-28 6:43:39 com.google.apphosting.utils.jetty.JettyLogger warn
警告: Nested in javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl could not be instantiated: java.lang.NullPointerException:
java.lang.NullPointerException
    at javax.xml.parsers.FactoryFinder.newInstance(FactoryFinder.java:103)
    at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:213)
    at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:128)
    at org.mortbay.xml.XmlParser.<init>(XmlParser.java:69)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.webXmlParser(WebXmlConfiguration.java:83)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.<init>(WebXmlConfiguration.java:78)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:506)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at org.mortbay.jetty.webapp.WebAppContext.loadConfigurations(WebAppContext.java:858)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:430)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:197)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:241)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:148)
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
    at com.google.gwt.dev.DevMode.main(DevMode.java:311)
2012-9-28 6:43:39 com.google.appengine.tools.development.DevAppServerImpl start
信息: The server is running at http://localhost:8888/
2012-9-28 6:43:39 com.google.appengine.tools.development.DevAppServerImpl start
信息: The admin console is running at http://localhost:8888/_ah/admin

 

 

 

转载于:https://www.cnblogs.com/martinzh/archive/2012/09/28/2707179.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值