Sop, habe jetzt den Code entsprechend angepasst.
Allerdings bekomme ich eine Fehlermeldung, die ich nicht zuordnen kann !
Fehlermeldung:
java.lang.ClassNotFoundException: TestPlugin
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at mconvert.CreateClassByName.<init>(CreateClassByName.java:11)
at mconvert.PluginManager.initiatePlugins(PluginManager.java:56)Class not found :-(
at mconvert.PluginManager.main(PluginManager.java:70)
java.lang.NullPointerException
at mconvert.CreateClassByName.instanceObject(CreateClassByName.java:22)
at mconvert.PluginManager.initiatePlugins(PluginManager.java:57)
at mconvert.PluginManager.main(PluginManager.java:70)
could not instantiate object from class :-(
Die entsprechenden Klassen:
Code:
public Vector initiatePlugins() {
this.loadPlugins();
Vector v = new Vector();
try {
for (int i = 0; i < availablePlugins.length; i++) {
CreateClassByName cl = new CreateClassByName(availablePlugins[i]);
Object o = cl.instanceObject((Object[])null);
v.add(o);
}
}
catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
return v;
}
public static void main(String[] args) {
PluginManager pm = new PluginManager();
pm.initiatePlugins();
/* for (int i = 0; i < pm.availablePlugins.length; i++) {
System.out.println(pm.availablePlugins[i]);
System.out.println(pm.pluginsPathes[i]);
}*/
}
}
Code:
class CreateClassByName {
Object o;
Class cl;
public CreateClassByName(String className) {
try {
cl = ClassLoader.getSystemClassLoader().loadClass(className);
}
catch (ClassNotFoundException e) {
System.out.println("Class not found :-(");
e.printStackTrace();
}
}
public Object instanceObject(Object[] param) {
try {
o = cl.getConstructor(null).newInstance(param);
}
catch (Exception e) {
System.out.println("could not instantiate object from class :-(");
e.printStackTrace();
}
return o;
}
public void executeMethod(String methodName, Object[] param) {
try {
o = cl.getMethod(methodName, null).invoke(o, param);
}
catch (Exception e) {
System.out.println("could not execute method on object");
e.printStackTrace();
}
}
}
Das hier ist die CLass die initialisiert werden soll:
Code:
package mconvert;
/**
* <p>Title: MConvert</p>
* <p>Description: Multiformat Converter</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author Die 2 Lustigen 3
* @version 1.0
*/
public class TestPlugin
implements PluginInterface {
public TestPlugin(){
System.out.println("Instanz des TestPlugins erfolgreich erzeugt");
}
/**
* convert
*
* @param source String
* @param target String
* @param form Format
* @todo Implement this mconvert.PluginInterface method
*/
public void convert(String source, String target, Format form) {
System.out.println("Convert Mehtode erfolgreich aufgerufen !");
}
/**
* getName
*
* @return String
* @todo Implement this mconvert.PluginInterface method
*/
public String getName() {
return "TestPlugin";
}
/**
* hasStatus
*
* @return boolean
* @todo Implement this mconvert.PluginInterface method
*/
public boolean hasStatus() {
System.out.println("hasStatus erfolgreich aufgerufen");
return false;
}
/**
* getStatus
*
* @return String
* @todo Implement this mconvert.PluginInterface method
*/
public String getStatus() {
return "hier kommt der Status";
}
/**
* hasOptions
*
* @return boolean
* @todo Implement this mconvert.PluginInterface method
*/
public boolean hasOptions() {
System.out.println("hasOptions erfolgreich aufgerufen");
return false;
}
/**
* showOptions
*
* @param Format String[]
* @todo Implement this mconvert.PluginInterface method
*/
public void showOptions(String[] Format) {
System.out.println("showOptions erfolgreich aufgerufen");
}
/**
* getConvertableFormats
*
* @return FormatList
* @todo Implement this mconvert.PluginInterface method
*/
public FormatList getConvertableFormats() {
System.out.println("getConvertableFormats erfolgreich aufgerufen");
return null;
}
/**
* stopAll
*
* @todo Implement this mconvert.PluginInterface method
*/
public void stopAll() {
System.out.println("stopAll erfolgreich aufgerufen");
}
/**
* isBusy
*
* @return boolean
* @todo Implement this mconvert.PluginInterface method
*/
public boolean isBusy() {
System.out.println("isBusy erfolgreich aufgerufen");
return false;
}
}
Wäre tolle wenn jemandem auffällt, was ich falsch gemacht habe !
Habe bei mir das JDK 1.5 installiert und auch in meiner IDE eingetragen, scheint alledings nicht verwendet zu werden
MfG
Marius Meuser