<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: load code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 12 Oct 2008 21:00:20 GMT</pubDate>
    <description>DZone Snippets: load code</description>
    <item>
      <title>Add a jar file to Java load path at run time</title>
      <link>http://snippets.dzone.com/posts/show/3574</link>
      <description>Sometimes it is necessary to amend the class load path at run time. For example, dynamically adding jar files containing user-configurable JDBC data sources. The way this is done is truly monstrous -- the URL Path format was only revealed when a colleague looked into the Java library sources.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.net.URLClassLoader;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;&lt;br /&gt;public class JarFileLoader extends URLClassLoader&lt;br /&gt;{&lt;br /&gt;    public JarFileLoader (URL[] urls)&lt;br /&gt;    {&lt;br /&gt;        super (urls);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void addFile (String path) throws MalformedURLException&lt;br /&gt;    {&lt;br /&gt;        String urlPath = "jar:file://" + path + "!/";&lt;br /&gt;        addURL (new URL (urlPath));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void main (String args [])&lt;br /&gt;    {&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            System.out.println ("First attempt...");&lt;br /&gt;            Class.forName ("org.gjt.mm.mysql.Driver");&lt;br /&gt;        }&lt;br /&gt;        catch (Exception ex)&lt;br /&gt;        {&lt;br /&gt;            System.out.println ("Failed.");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            URL urls [] = {};&lt;br /&gt;&lt;br /&gt;            JarFileLoader cl = new JarFileLoader (urls);&lt;br /&gt;            cl.addFile ("/opt/mysql-connector-java-5.0.4/mysql-connector-java-5.0.4-bin.jar");&lt;br /&gt;            System.out.println ("Second attempt...");&lt;br /&gt;            cl.loadClass ("org.gjt.mm.mysql.Driver");&lt;br /&gt;            System.out.println ("Success!");&lt;br /&gt;        }&lt;br /&gt;        catch (Exception ex)&lt;br /&gt;        {&lt;br /&gt;            System.out.println ("Failed.");&lt;br /&gt;            ex.printStackTrace ();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 23 Feb 2007 15:24:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3574</guid>
      <author>mikewilsonuk (Mike Wilson)</author>
    </item>
  </channel>
</rss>
