Java编译时异常 unknow protocol : e

本文记录了一次使用JDOM解析XML文件时遇到的MalformedURLException异常情况,并给出了相应的解决方案。通过调整文件读取方式,确保了不同字符集环境下程序的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录下昨天的异常处理

运行环境: 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处理. 异常解决.

但是, 这里仅是个判断, 还需要后期继续跟踪......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值