记录下昨天的异常处理
运行环境: MyEclipse 6 + tomcat 6 + jdk 1.6
异常抛出代码:
java.net.MalformedURLException: unknown protocol: e
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:891)
at tops.webx.config.Registry.<init>(Registry.java:31)
at tops.webx.kernel.Startup.init(Startup.java:32)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)问题源代码:

public Registry(String rootKey) throws Exception...{
SAXBuilder sb = new SAXBuilder();
_xml = sb.build(_CfgPath + "/" + rootKey + "-registry.xml"); //Exception
_root = _xml.getRootElement();
}问题分析:
在之前,我的代码没有问题, 可以正常运行, 但是, 当我改了全局字符集环境变量NLS_LANG时, 发现出现了以上问题, 此时, 我判断是否是JDOM读取文件时产生异常, 因此做了如下处理.
解决方案:

public Registry(String rootKey) throws Exception...{
SAXBuilder sb = new SAXBuilder();
_xml = sb.build(new File(_CfgPath + "/" + rootKey + "-registry.xml"));
_root = _xml.getRootElement();
}
处理结果:
当我修改完毕后再运行时, 发现此时程序可以正常运行了.
总结:
以上问题在我的计算机里出现, 我暂时判断为JDOM读取已修改了全局字符集环境变量的文件时会产生无法读取异常,因此以文件方式从新读取指定路径文件再让JDOM处理. 异常解决.
但是, 这里仅是个判断, 还需要后期继续跟踪......
本文记录了一次使用JDOM解析XML文件时遇到的MalformedURLException异常情况,并给出了相应的解决方案。通过调整文件读取方式,确保了不同字符集环境下程序的稳定运行。
1919

被折叠的 条评论
为什么被折叠?



