hi,
ich braeuchte recht dringend hilfe bei einem problem. zum theman jar file gibts hier war schon viel aber ich finde keine gute loesung fuer mein problem.
ich habe halt ein groeßeres program in welchen auch per classloader klassen geladen werden. das funktioniert so auch alles gut. nur soll das ganze jetzt als jar file verpackt werden und sobal das der fall ist werden die klassen welche per loeader aus einem package geladen werden nichtmehr geladen.
kann ich irgentwie dafuer sorgen das das program bei der pfad angabe vom jar file ausgeht?
ich habe mir schon ueberlegt die ganzen klassen einfach in einen temp ordner zu entpacken. nur finde ich dazu keine java methode (wobei ich eigentlich davon ausgehe das es sowas gibt, wenn ja , welche methode?) und ist das auch doof weil mein jar file dan nicht mehr umbenant werden kann. (den pfad in welchen sich das file befindet bekomme ich ja leicht ueber system raus. )
einfach so etwas geht sicher nicht, oder: c:\foo\bar.jar\klasse1.class ? also java sagen das es jar files einfach wie ordner behandeln soll?
ich braeuchte recht dringend hilfe bei einem problem. zum theman jar file gibts hier war schon viel aber ich finde keine gute loesung fuer mein problem.
ich habe halt ein groeßeres program in welchen auch per classloader klassen geladen werden. das funktioniert so auch alles gut. nur soll das ganze jetzt als jar file verpackt werden und sobal das der fall ist werden die klassen welche per loeader aus einem package geladen werden nichtmehr geladen.
kann ich irgentwie dafuer sorgen das das program bei der pfad angabe vom jar file ausgeht?
ich habe mir schon ueberlegt die ganzen klassen einfach in einen temp ordner zu entpacken. nur finde ich dazu keine java methode (wobei ich eigentlich davon ausgehe das es sowas gibt, wenn ja , welche methode?) und ist das auch doof weil mein jar file dan nicht mehr umbenant werden kann. (den pfad in welchen sich das file befindet bekomme ich ja leicht ueber system raus. )
einfach so etwas geht sicher nicht, oder: c:\foo\bar.jar\klasse1.class ? also java sagen das es jar files einfach wie ordner behandeln soll?
Code:
public class Loader<A> {
private A newInstance(String path, String classname) throws Exception
{
URL url = new File(path).toURL();
URLClassLoader cl = new URLClassLoader(new URL[] { url });
Class<A> c = (Class<A>) cl.loadClass(classname);
return c.newInstance();
}
public ArrayList<A> getAllClasses(String dir)
{
File handle = new File(dir);
ArrayList<A> list = new ArrayList<A>();
try{
for(String x : handle.list() )
{
if((x.contains(".class")) && !(x.contains("Interface")))
{
x=x.replace(".class","");
A temp = newInstance("",dir+"."+x);
list.add(temp);
}
}
}catch(Exception e){};
return list;
}
}