unknown protocol: c (JDOM a SAXBuilder)

10,012

Solution 1

My first guess is that you are loading a local file, like: "c:/mylocalfile.xml"

But this URL does not contain the protocol, like http://, ftp:// or file://

Try file://c:/mylocalfile.xml

Solution 2

Actually, I had space in my folder name which caused this error. Even in case of local files JAVA has the capability of understanding the protocol types.

Share:
10,012
Wassim AZIRAR
Author by

Wassim AZIRAR

https://www.malt.fr/profile/wassimazirar I am not looking for permanent contract (no need to contact me for that) I develop 💻 in .NET Core, JavaScript, Angular and React ⚛

Updated on June 07, 2022

Comments

  • Wassim AZIRAR
    Wassim AZIRAR almost 2 years

    I'm using JDOM with SAXBuilder to parse XML files, and I have a problem with a file which is throwing this error :

    java.net.MalformedURLException: unknown protocol: c
        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 org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
        at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
        at com.foo.moo.MyClass.getValues(MyClass.java:321)
    

    And the line is :

    Document document = null; 
    document = sxb.build(files.elementAt(i)); // This one
    

    After doing some research on the internet, I think the error is related to Java 1.6.

    What do you think ?

  • MrDrews
    MrDrews over 12 years
    Agree. You can try something like if(myUrl.getProtocol().equals("c")){myUrl = new URL("file://"+myUrl.toexternalform())}
  • zEro
    zEro almost 11 years
    Yup, you are so right, and as the OP mentioned this seems to be in issue in Java 1.6 and above only.