Is it possible to load a class from a jar file and then create an object from it?
Note: The jar file is not there when the program is compiled, but is added by the user later and is loaded in when the user starts the program.
My code goes likes this: The user has a jar file with nothing but a compiled java class in it. The user then puts this jar file in a directory and starts my program which looks through the directory and finds this jar file. It then loads this jar file and creates a class from it which it then creates an object from that and adds it to an array.
I have everything down except for creating a class from the jar file (loaded as a java.io File) and then creating and object from that class.
Any help? Thanks.
You're looking for Class#forName
and Class#newInstance
methods.
This link provides a good example about initializing a class knowing its name (extracted from the link):
Class c = Class.forName("com.xyzws.AClass");
AClass a = (AClass)c.newInstance();
A good example for these situations is using JDBC (as the link also points out), because you initialize an object of the db engine driver you want to connect. Remember than this driver comes from an imported jar into your project, it could be a jar to MySQL, Oracle or MSSQL Server, you just provide the driver class name and let the JDBC API and the jar handles the SQL work.
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");
Also, for this specific problem loading the jar dynamically, there are question and answer:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With