Some way to dynamically add jars to java classpath?

I have a fixed directory that people might be adding jar files to. I do will not know what the jar files are named nor how many jar files there will be. I am wanting to be able to search this directory for all jar files & dynanically add these jar files to my class path in a peice of code I am writting so that I would be able to locate classes in them. Does anyone have any ideas on how to do this?
Your help is much appreciated =)

The URLClassloader probably has what you need. If not, you'll have to write you're own custom classloader... Not really that hard though.

Similar Messages

  • Dynamically adding jars to the classpath at runtime

    Hi All,
    I have a query regarding dynamically loading jars at runtime. I am developing an application that uses third party jars and there are a number of different versions that the utility is to support so I want to be able to load the jars relating to that specific version through selection on the gui. The jar files are the same name for all versions e.g.
    v1 has app1.jar
    and v2 has app2.jar
    I have these in separate folders called app1jars and app2jars. I have tried a number of classloader examples but always get a classnotfoundException. Any ideas? Thanks in advance for replies

    Hi,
    Sorry for being a bit vague. I have attached the code below that I was trying. Im confused about how to load the classes within each of the jars and use them do i have to use defineclass? AppSession is an interface.
    import java.util.*;
    import java.net.*;
    import java.sql.*;
    import com.app.AppSession;
    import com.app.AppWorker;
    import java.io.*;
    import java.lang.reflect.Method;
    public class JarTest {
        public static File[] getExternalJars()
        { String jarDirectory = "C:\\JarLoaderTest\\1.1jars";
          File jardir = new File(jarDirectory);
          File[] jarFiles = jardir.listFiles();
          return jarFiles;
        public static void main(String[] args) throws Exception {
         Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] {URL.class});
            addURL.setAccessible(true);
         File[] files = getExternalJars();
            ClassLoader cl = ClassLoader.getSystemClassLoader();
         for (int i = 0; i < files.length; i++) {
         URL url = files.toURL();
    System.out.println(url.toString());
         addURL.invoke(cl, new Object[] { url });
    cl.loadClass("AppSession").newInstance();
    cl.loadClass("AppWorker").newInstance();
    try
    { AppSession session = AppWorker.getConnection(username,password,port,server); // these are filled in with the actual details in my program
    catch(Exception e)

  • How to add jar files to classpath?

    Never mind, I figured that out.
    Edited by: leoJones on Mar 25, 2008 8:29 PM

    If you want the jar file to be globally accessible, add it in the $J2EE_HOME/config/application.xml file like so:
    <library path="../test.jar" />
    Then drop the jar file in your $J2EE_HOME directory. This assumes you are manually configuring the OC4J server. I'm sure there is an equivalent way to do this from the Enterprise Manager web site.
    John H.

  • ADD JAR LIB TO CLASSPATH FOR TOMCAT

    Hello,
    I'am running a web application which also operates an automatic sending of mails.
    When I run my files on Jbuilder all things are OK.
    But when I test my application with Tomcat I have this error:
    Error: 500
    Location: /ApplicationXTS/servlet/net.projet.ControlCreateObject
    Internal Servlet Error:
    java.lang.NoClassDefFoundError: javax/mail/MessagingException
         at java.lang.Class.newInstance0(Native Method)
         at java.lang.Class.newInstance(Unknown Source)
         at org.apache.tomcat.core.ServletWrapper.initServlet(ServletWrapper.java:298)
         at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:445)
         at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:597)
         at org.apache.tomcat.servlets.InvokerServlet.service(InvokerServlet.java:257)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)
         at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
         at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
         at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
         at java.lang.Thread.run(Unknown Source)
    Thank you for your help.
    F.S

    It seem the required class files are not set in the tomacat classpath.im not sure which version of tomcat u are using.add the corresponding javamail jar files (including activation framework)in ur machine and set classpath accordingly.
    HTH.

  • Error in Dynamic Value Change Using Java script

    Hi ,
    I am trying to put dynamic value sin tabular form report.
    I used the below code
    function updateLOV3(filter, listName,itemId,po_no){
    var xml = null;
    var list = document.getElementById(listName);
      var get = new htmldb_Get(null,$v('pFlowId'), 'APPLICATION_PROCESS=Update_Invoice_UOM',0);
    alert(po_no);
    alert(itemId);
    get.add('TEMPORARY_ITEM', po_no);
    get.add('TEMP_ITEM', itemId);
    alert(list);
    ret = get.get('XML');
    if(ret){
      var s = ret.getElementsByTagName("select");
      if(s){
       var o = ret.getElementsByTagName("option");
       oCount = o.length;
       if(oCount!='0'){
            var l_Opt_Xml = o[0];
            appendToSelect(list, l_Opt_Xml.firstChild.nodeValue);
    if(oCount=='0'){
    alert('entering');
       list.value=0;
    get = null;
    function appendToSelect(pSelect,pContent) {
    alert(pContent);
    pSelect.value=pContent;
    }my Application Process code is
    declare
    begin
    owa_util.mime_header('text/xml', FALSE );
    htp.p('Cache-Control: no-cache');
    htp.p('Pragma: no-cache');
    owa_util.http_header_close;
    htp.prn('<data>');
    htp.prn('<select>');
    for rec in (SELECT UNIT_OF_MEASURE r ,UNIT_OF_MEASURE d FROM HOMES_RGP_PURCHASE_ORDER_LINES WHERE ITEM_ID = :TEMP_ITEM AND
    PURCHASE_ORDER_ID = :TEMPORARY_ITEM)
    loop
    htp.prn('<option value="' || rec.d || '">' || rec.r || '</option>');
    end loop;
    htp.prn('</select>');
    htp.prn('</data>');
    end;In my application process if i removed the PURCHASE_ORDER_ID = :TEMPORARY_ITEM then the value is coming.
    Java Script giving both values like item id and purchase order id.
    If i ran the sql query manually its giving values.
    i hope thers is some error in get.add method in java script.
    Its always going into the below condition
    if(oCount=='0'){
    alert('entering');
       list.value=0;
    get = null;but manually i have checked the database the value is present.
    Please anyone help me out in this.
    Regards,
    Shan...

    Hi all,
    The same i have checked with emp table but still i got the same problem.
    Its my application process
    declare
    begin
    owa_util.mime_header('text/xml', FALSE );
    htp.p('Cache-Control: no-cache');
    htp.p('Pragma: no-cache');
    owa_util.http_header_close;
    htp.prn('<data>');
    htp.prn('<select>');
    for rec in (SELECT ename r,ename d FROM 
    emp
    WHERE  empno = :TEMP_ITEM)
    loop
    htp.prn('<option value="' || rec.d || '">' || rec.r || '</option>');
    end loop;
    htp.prn('</select>');
    htp.prn('</data>');
    end;My Javascript code is
    <script type="text/javascript">
    function setvalues(itemId,list)
    var s = $v(itemId);
    alert(s);
    var get = new htmldb_Get(null,$v('pFlowId'), 'APPLICATION_PROCESS=POPULATE_EMPNAME',0);
    get.add('TEMP_ITEM', s);
    ret = get.get('XML');
    if(ret){
      var s = ret.getElementsByTagName("select");
      if(s){
       var o = ret.getElementsByTagName("option");
       oCount = o.length;
       if(oCount!='0'){
            var l_Opt_Xml = o[0];
            appendToSelect(list, l_Opt_Xml.firstChild.nodeValue);
    if(oCount=='0'){
       list.value=0;
    get = null;
    function appendToSelect(pSelect,pContent) {
    pSelect.value=pContent;
    </script>Can anyone suggest me what i have missed???
    Cheers,
    Shan

  • Dynamically loading jar files

    Hi
    In my application I need to dynamically create objects of types specified by string which is passed as parameter. I am able to do this if the class is inside the same jar. But I need to load the class from any jar name specified. How do i go about doing this? Is there a way to dynamically loading jar files?

    It's easy. You use [url http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLClassLoader.html]URLClassLoader:String jarPath = ...;
    String className = ...;
    URLClassLoader ucl = new URLClassLoader(new URL[] { new File(jarPath).toURL() });
    Class cls = Class.forName(className, true, ucl);
    ...Regards

  • Executing jar from java code, then kill parent java code

    Please suggest if there is any best way around on executing jar from java code then killing parent java code.
    a) I have desktop based java application say "Monitor.java" which runs every 5 minutes.
    b) How can I START external java application say "execute.jar" from Monitor.java THEN EXIT Monitor.java
    I tried various options using "ProcessBuilder" and calling bat file but I need Monitor (parent application to EXIT, immediately after calling child (execute.jar)
    Try1) ProcessBuilder builder = new ProcessBuilder("java -jar execute.jar");          
    Process process = builder.start();
    Try2) Runtime r = Runtime.getRuntime();
    Process p = null;
    p = r.exec(new String[] { "cmd", "/c", "start C:/temp/Test.bat" });

    I have a requirement to transfer data from one db to another db from Java Application Layer.Maybe, maye not. We get all sorts of weird "requirements" - which are nothing but thoughts or proposed solutions.
    But,
    Did the "requirement" mention whether the table existed already or not in the target database? - If not, did it tell you to create it - drop/create it?
    Did the "requirement" deliver some explanation to why this copying was neeeded? - Are we talking replication? - Or a one time cloning?
    Etc, etc,
    Personally I would always argue against a "reuirement" like that. - It just isn't the way to do it. Period.
    Regards
    Peter
    P.S: If you are satisfied with what COPY does, then you could let Java make an OS call and do it from there?

  • How to add to java classpath?

    I am wondering how to add/implement to java classpath. I think I might be missed out the classpath thing so my program doesn't work. I keep getting error message like: "cannot resolve symbol: method setDocumentHandler(BookCounter)" and warning messages like: "C:\Example\BookCounter.java :11: warning:org.xml.sax.HandlerBase in org.xml.sax has been deprecated." and "C:\Example\BookCounter.java :16: warning:org.xml.sax.HandlerBase in org.xml.sax has been deprecated."
    If this is not because of classpath problem, kindly let me know what should I do?
    My code as follow:-
    ========================
    import java.io.*;
    import org.xml.sax.*;
    import org.xml.sax.HandlerBase;
    import javax.xml.parsers.SAXParserFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    public class BookCounter extends HandlerBase
    private int count = 0;
    public static void main (String args[]) throws Exception
    (new BookCounter()).countBooks();
    public void countBooks() throws Exception
    SAXParserFactory f = SAXParserFactory.newInstance();
    SAXParser f2 = f.newSAXParser();
    // Parser p = new com.jclark.xml.sax.Driver();
    f2.setDocumentHandler(this);
    f2.parse("file:///C:/books.xml");
    public void startElement(String name) throws SAXException
    if (name.equals("book"))
    count++;
    public void endDocument() throws SAXException
    System.out.printIn("There are" + count + "books");

    The errors don't look like classpath problems. The first one is a result of it not being able to find a method in BookCounter (or more likely HandlerBase) that has the signature that you are attempting to use.
    The warnings come from the fact that HandlerBase has been deprecated, just like the messages state. In other words, it has been replaced by a newer version, or incorporated into another class' functionality. Check the API for more information.

  • Is there a way to add jar file in my program

    sorry to botter you, but i really need help for this, i really dont know how to do it. i have my prog taht i want to put in jar file, that cause no problem, but my program isnt fully functionnal because he use a jar file (my driver to acces my database) taht i had mount in forte. but i cant put in in my class file, because i want my jar to be able to run everuwhere on any computer taht have the jre installed. so in resume, i want to add jar file in my program... can i have to add it in my jar file, or decomrpesse it and put the folder like org.postgre.mfileshere... ????? i really dont know
    thx to help me

    ok If I understood, you need to add a third part Jar
    file to your own Jar File App so...
    Yes, you can decompress it in a directory tree and
    merge it with your application (i.e) if you have a jar
    file like this:
    br.com.yourApp.util
    and a third part jar file like this:
    br.com.thirdPart.tools
    br.com.thirdPart.util
    you will have these directory trees:
    br/com/yourApp/util/
    br/com/thirdPart/tools/
    br/com/thirdPart/util/
    then you can marge it in a unique tree:
    br/com/yourApp/util/
    ....../thirdPart/tools/
    ................/util/
    then you can make a new jar file with it...
    .....OR YOU CAN ADD THE PATH where your JDBCDrive is
    placed to the classpath of your application just using
    the -classpath option execution string of you
    application, like this:
    C:\jreHome\bin\java.exe -jar -classpath
    .;C:\someDir\thirdPart.jar yourApp.jar
    That's the better way to do it and then everything
    will work! :-)
    []'s Igor
    Brazil * * * * *k thx, ill give a try, and give you result later. but can you answer me another question, why when i double click on any jar file executable, sometimes javawa start but do nothing, sometimes they start and said no main class find, sometimes dotn start anymore, and sometimes work perfectly...?? is the jdk taht is not good? i use the last one
    or problem with my instalation, or the prog i try to run?
    thx

  • How to add jar library in java?

    Hi,
    I am Anil,
    Could it possible to add library in Java library?
    like java.io.DataInputStream is library in Java (JDK), so I want to add my own library in Java JDK.
    I have created a package net.jini.j2space and one interface in it J2Space, I have created jar of this.
    and now I want to this jar to Java library so I can import it in my projects.
    Please help me.
    Thanks in advance.

    Hi, I am Zander Smith and I want to share my story with you. I am a sport star in my community, I am known for my football skills. I had a very healthy physique because I used to do almost 4 hours of daily workout. One day it was raining heavily and I was busy playing football with a nearly club who challenged our team. While playing I hit my leg on the goal post and broke my leg. I came out of hospital after three months. Since I was on complete bed rest I gained 35 pound. I had lost my athletic shape. I was very upset with my bulky body and I wanted to have my old shape back at any cost.
    I started to work out. As I was restricted by doctor to do rigorous work out, it did not help me the way I wanted. After a month one of my friends suggested me [Acai berry|http://ezinearticles.com/?Acai-Berry---How-I-Lost-30-Pounds-in-Under-30-Days-Using-The-Acai-Berry&id=1998407] . I thought that my workouts are enough for losing my weight, but I was impatient. I took all the information about this product and I found it useful. I purchased Acai Berry Supplement and used it. Now it is like a dream come true, I have come back to my earlier shape. Thanks to Acai Berry now I am living my life as I lived before. [Acai berry|http://www.goarticles.com/cgi-bin/showa.cgi?C=1829429]

  • Is there some way to add multiple addresses to an email I am sending that doesn't close the contact list after I click on an address?  This necessitates constantly going back to click the + sign to add each address separately.

    Is there some way to add multiple addresses to an email I am sending that doesn't close the contact list after I click on an address?  This necessitates constantly going back to click the + sign to add each address separately.  Is there some way I can open the contact list, click on all of the individual addresses to which I want to send the email without the list closing between each address entry, and have all of my address entries be listed to the email at one time?  Something like it works in Gmail.  I do not want to use set lists, I want to enter different addresses each time I send an email.  And I am a very slow typist, so I don't want to type the first few letters of each recipient's name.  It is much faster for me to just click on the e-mail addresses in the list as a group.  It doesn't make any sense to me to have to reopen the contact list for each address, when it should be so easy to click on all of the addresses I want at one time and then click once to add them all to the email as a group.  If there is a solution to this, please tell me.  Thanks.

    Vatlily,
    Try this:
    1. Select Mail>File>New Message.
    2. Select Mail>Window>Address Panel.
    3. Use (command+click) on the desired addressees in the Address Panel to create the list.
    4. Click "To:" on the top left of the Address Panel.
    The group that you selected will be added to the "To" field in your New Message.

  • Add & use custom jars in "Java embedding" component

    I need to generate pdf file in process.
    So I included "Java embedding" component, and write my code. For clarity example:
    com.itextpdf.text.Document document = new com.itextpdf.text.Document( 
                        com.itextpdf.text.PageSize.A4, 50, 50, 50, 50); 
              try { 
                   com.itextpdf.text.pdf.PdfWriter pdf = com.itextpdf.text.pdf.PdfWriter 
                             .getInstance(document, new java.io.FileOutputStream("c:\\text.pdf")); 
                   document.open(); 
                   document.add(new com.itextpdf.text.Paragraph("This is test message")); 
                   catch (com.itextpdf.text.DocumentException de) { System.err.println(de.getMessage());  }
                   catch (Exception de) { System.err.println(de.getMessage());}
              document.close();Im using external jar file, of course I add it to classpath (right click soa project -> properties -> libraries and classpath ->add jar).
    But I get folowing error (no during compilation, but during deploying):
    Failed to compile bpel generated classes.
    failure to compile the generated BPEL classes for BPEL process "SimpleProcess" of composite "default/SOAProject!1.0*soa_9f8e80a4-346d-424e-9e12-1b69e2024e58"
    The class path setting is incorrect.
    Ensure that the class path is set correctly. If this happens on the server side, verify that the custom classes or jars which this BPEL process is depending on are deployed correctly. Also verify that the run time is using the same release/version.
    [04:35:23 PM] Check server log for more details.
    [04:35:23 PM] Error deploying archive sca_SOAProject_rev1.0.jar to soa_server1 [[fe80:0:0:0:5968:cb45:2001:f6ce]:8001] 
    [04:35:23 PM] ####  Deployment incomplete.  ####
    [04:35:23 PM] Error deploying archive file:/C:/Projects/SOAProject/deploy/sca_SOAProject_rev1.0.jar
    (oracle.tip.tools.ide.fabric.deploy.common.SOARemoteDeployer)where ist the problem???
    Edited by: user1175491 on Nov 2, 2010 4:39 PM

    Ajaykumar, can u please write me what exactly append to bpel:exec part (which classes include?)? it looks now:
    <bpelx:exec name="GeneratePDF" version="1.5" language="java">
    <![CDATA[
                  com.itextpdf.text.Document document = new com.itextpdf.text.Document(  
                        com.itextpdf.text.PageSize.A4, 50, 50, 50, 50);  
              try {  
                   com.itextpdf.text.pdf.PdfWriter pdf = com.itextpdf.text.pdf.PdfWriter  
                             .getInstance(document, new java.io.FileOutputStream("c:\\text.pdf"));  
                   document.open();  
                   document.add(new com.itextpdf.text.Paragraph("This is test message"));  
                   catch (com.itextpdf.text.DocumentException de) {System.err.println(de.getMessage());}
                   catch (java.lang.Exception de) {System.err.println(de.getMessage());}  
              document.close();]]>
    </bpelx:exec>Edited by: user1175491 on Nov 2, 2010 5:07 PM
    Edited by: user1175491 on Nov 2, 2010 5:08 PM

  • Dynamically add some elements in WebService operation request

    Hi, 
    I have a WebService element defined in my mxml which use to make soap calls. 
    I need to dynamically add some repeating groups for action (dependent on action) in the following example. 
    How can I add this in Action Script section? Can I access the WebService  by id userRequest and specify " 
    userRequest.operations.DoAction.request.DoItemActionRequest.action.requiresAdditionItems.n ameValuePair.name = "SomeName"; 
    userRequest.operations.DoAction.request.DoItemActionRequest.action.requiresAdditionItems.n ameValuePair.name = "SomeValue";  
    <mx:WebService  id="userRequest" wsdl="{Application.application.wsdl}" > 
         <mx:operation name="DoAction" resultFormat="object" 
          fault="faultHandler(event)" 
          result="DoActionHandler(evnt)">
            <mx:request> 
              <DoActionRequest> 
                 <userId>{Application.application.userID}</userId> 
                  <action> 
                     <actionId>{selectedItem.actionId}</actionId> 
                 </action> 
              </DoActionRequest> 
             </mx:request> 
           </mx:operation> 
    </mx:WebService>
    Thanks,
    Amitava

    Hi miguel8312,
    Thanks for your suggestion. I understand the steps you explained for defining, calling and processing the result from a webservice from a MXML body.
    My query is specifically, can I modify the webservice request defination from AS function before making the call?
    In my example, if I need to dynamically add a name value pair for <action> tag (e.g. actionParam ), how do I do that?
    Thanks,
    Amitava

  • I recently installed iTunes 11.0.  Now when I want to sync my iPhone 3GS the software wants to add 256 contacts and 1005 items to my calendar.  I would assume that these are duplications.  Is there some way to fix this?

    I recently installed iTunes 11.0.  Now when I want to sync my iPhone 3GS the software wants to add 256 contacts and 1005 items to my calendar, both on my Windows XP computer.  I would assume that these are duplications.  Is there some way to fix this?  Alternatively, how can I reinstall the previous version of iTunes?

    I have already authorized this computer with my Apple ID. I think this only allows me to re-download all purchased applications to the iTunes library again without re-purchasing them. However, iTunes still keeps asking me if I want to "erase and sync" or not.

  • Classes+resources in JAR: have to add each single Jar file to CLASSPATH?

    Hello,
    For my application, I plan to easily embed plugins that can be added by the user by copying it into a subfolder "plugins".
    Now, I start my app from a shellscript and in order to load resources from within some of these Jars (e.g. using Class.getResourceAsStream() ), it only works if I explicitly add the specific Jar filename to the classpath from the shellscript.
    I read in a German Java book, that also just using folder names is enough, but it does not work for me:
    Works:
    $JAVA_HOME/bin/java -Djava.library.path="./lib" -classpath "./lib:./plugins/test.jar" test.AppFails:
    $JAVA_HOME/bin/java -Djava.library.path="./lib" -classpath "./lib:./plugins/" test.AppIs it really required to add Jars explicitly, so that e.g. my shellscript has to make a Jar listing of that folder in order to pass them as classpath files?
    Thanks and regards,
    Timo

    No, you don't have to do it that way. What you need
    to do is to have your progam create a URLClassLoader
    pointing to all the jars in the plugin directory.
    Then request your plugin classes from that, rather
    than Class.forName();
    You need to create an array of file URLs for the
    jars, use File.listFiles() and then File.toURL() on
    each ..jar you find.
    p.s. If you do it this way make sure your plugin
    classes are not on the classpath.
    Hmm. Cool. I had no idea. Thanks for correcting me.

Maybe you are looking for

  • HT203756 How can I remove 'old' or 'incomplete' backups from iCloud?

    How can I remove 'old' or 'incomplete' backups from iCloud?  When I attempted, the iPhone 6+ message asked if I wanted to remove ALL of the backups... without giving me the option of selecting the specific one I wanted to remove. I had performed 'bac

  • Credit Card Merchant Security question

    I need to get approved for Payment Card Industry (PCI) Data Security Systems (DSS), which means I need to know if every e-mail I ever opened is saved in the bowels of my G4...just in case somebody was stupid enough to send me a credit card in an e-ma

  • Report on Positions directly linked to Authorization roles

    Hello All, Is there a report in SAP which can tell us which positions are assigned to Authorization roles or which Users are directly assigned to Authorization roles rather than through their Positions? If not a report is there way we can find it out

  • 2 of 3 approved....how is barclays for recons?

    So in the past month, I have decided to go after some business cards for my side gig; 1.  Chase Ink Plus ... approved2.  Amex Business Gold ...approved3.  Barclays Business Hawaiian Air ....denied I have not got the letter yet on the denial from barc

  • Can't connect to a certain website

    I am trying to connect to online banking (which I do everyday) and it is telling me the server stopped working??  This is happening on my Macbook Air and my iPad.  Any suggestions?  Oh...and I can go anywhere else on the internet....and I called the