Hallo zusammen,
wir arbeiten derzeit an einem Eclipse Plugin Text Editor mit JFace. Dieser soll bei Betätigung des ContextMenüs (also CTRL+Space) mittels URLClassLoader eine spezifizierte Klasse laden, deren Methoden in eine ArrayList stecken und diese dann dem ContextMenü hinzufügen.
PATH gibt den Pfad des binary file ordners an.
In der A4LStandardFunctionArrayList befinden sich alle Klassen, von denen die Methoden benötigt werden. In der getClassForName befindet sich der URLClassLoader:
pName ist dabei der Klassenname, also z.B. "Strings". Im dazugehörigen bin Ordner befindet sich die "Strings.class". Wird das Plugin ausgeführt und der ContentAssist gestartet, wird folgende Exception geworfen:
java.lang.NoClassDefFoundError: Strings (wrong name: standardlibrary/Strings)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
usw.
Bin dankbar für jede Hilfe
Gruß
StefanTmp
wir arbeiten derzeit an einem Eclipse Plugin Text Editor mit JFace. Dieser soll bei Betätigung des ContextMenüs (also CTRL+Space) mittels URLClassLoader eine spezifizierte Klasse laden, deren Methoden in eine ArrayList stecken und diese dann dem ContextMenü hinzufügen.
Java:
private static final String PATH = "C:/Parser/A4GLRuntime/bin/standardlibrary/";
PATH gibt den Pfad des binary file ordners an.
Java:
public ArrayList<String> getMethodsForContentAssist() {
for (String lTmp : A4LStandardFunctionArrayList.getInstance()) {
Class<?> lClass = getClassForName(lTmp);
for (Method lMethod : lClass.getDeclaredMethods()) {
mList.add(lMethod.toString());
}
}
return mList;
}
In der A4LStandardFunctionArrayList befinden sich alle Klassen, von denen die Methoden benötigt werden. In der getClassForName befindet sich der URLClassLoader:
Java:
private Class<?> getClassForName(String pName) {
Class<?> lResult = null;
try {
URL[] lUrl = new URL[1];
File lFile = new File(PATH);
lUrl[0] = new URL(lFile.toURI().toURL().toString());
URLClassLoader lLoader = new URLClassLoader(lUrl);
lResult = lLoader.loadClass(pName);
} catch (Exception Ex) {
System.out.println(Ex.toString());
}
return lResult;
}
pName ist dabei der Klassenname, also z.B. "Strings". Im dazugehörigen bin Ordner befindet sich die "Strings.class". Wird das Plugin ausgeführt und der ContentAssist gestartet, wird folgende Exception geworfen:
java.lang.NoClassDefFoundError: Strings (wrong name: standardlibrary/Strings)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
usw.
Bin dankbar für jede Hilfe
Gruß
StefanTmp
Zuletzt bearbeitet: