Solved

Dynamically loading classes from a jar at runtime

Posted on 2010-09-23
7
1,706 Views
Last Modified: 2013-11-24
Hi.

I want to write an application in Java which is able to load JARs from a directory during runtime, add all classes inside to the classpath, load a spring context from the jar and instantiate the main class of it (it implements an Interface). If I add the JAR to the classpath before execution I am able to find the class which implements the interface and load it. I want to do this at runtime and call its functions using reflection (the list of methods will be listed by calling a function that is also noted in the interface). I think I need multiple class loaders and instantiate somehow. Does anyone know ho I can accomplish this?

Thanks,
Sintax
0
Comment
Question by:westerlike
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 26

Expert Comment

by:ksivananth
ID: 33751231
yes as you said you need toi write custom classloaders, take a look http://www.javaworld.com/javaworld/jw-10-1996/jw-10-indepth.html
0
 
LVL 40

Expert Comment

by:gurvinder372
ID: 33751255
0
 

Author Comment

by:westerlike
ID: 33751289
Thanks, still have some questions though: If I load the jar with a custom loader and call the loadClass of the classloader, will it also load all dependencies of that class (those are also bundled in the jar file)? In my case I have a spring.xml in the jar as well which describes the beans inside, they use several libraries whcih are also bundled inside the jar file. The main entry point class implements and interface that I know and can find it from the context file once the jar is loaded.


How would I approach loading that bean context and instantiating the main class from the jar using the classloader?
0
How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

 
LVL 40

Expert Comment

by:gurvinder372
ID: 33751333
<<If I load the jar with a custom loader and call the loadClass of the classloader, will it also load all dependencies of that class (those are also bundled in the jar file)?>>
Yes

<<instantiating the main class from the jar using the classloader?>>
once the class is loaded, you can instantiate it way you normally do.
0
 

Author Comment

by:westerlike
ID: 33751378
and would the libraries in the jar file interfere with the main classloader versioning/dupe classes? Also would they be able to communicate? I am trying to load the class and have the main class loader call functions using reflection. The jars can be replaced during runtime and the main app would then remove the custom loader and instantiate a new one.
0
 
LVL 40

Accepted Solution

by:
gurvinder372 earned 500 total points
ID: 33751400
the system classes will not be overriden. duplicate classes are not loaded again. Please read carefully the first link i had posted

to know how to reload a class again, check this
http://www.exampledepot.com/egs/java.lang/reloadclass.html



0
 

Author Closing Comment

by:westerlike
ID: 33844742
Thanks. I managed to create a dynamic loader.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Facing this issue for maven proxy setting 2 44
eclipse console opening separately 2 49
maven disable workspace resolution 1 77
Java pass by reference 3 74
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
I had a project requirement for a displaying a user workbench .This workbench would consist multiple data grids .In each grid the user will be able to see a large number of data. These data grids should allow the user to 1. Sort 2. Export the …
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
Suggested Courses

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question