javaurlprotocolsmalformedurlexception

Why does Java's URL class not recognize certain protocols?


URL u=new URL("telnet://route-server.exodus.net");

This line is generating :

java.net.MalformedURLException: unknown protocol: telnet

And I encounter similar problems with other URLs that begin with "news://"

These are URLs extracted from ODP, so I don't understand why such exceptions arise..


Solution

  • Issue

    Java throws a MalformedURLException because it couldn't find a URLStreamHandler for that protocol. Check the javadocs of the constructors for the details.

    Summary

    Since the URL class has an openConnection method, the URL class checks to make sure that Java knows how to open a connection of the correct protocol. Without a URLStreamHandler for that protocol, Java refuses to create a URL to save you from failure when you try to call openConnection.

    Solution

    You should probably be using the URI class if you don't plan on opening a connection of those protocols in Java.