Ao usar swt, teremos as mesmas assinaturas de método independente de que pataforma usemos. Todavia os jarfiles e as bibliotecas nativas são diferentes; eu poderia fazer scripts pra resolver isso pra mim, mas acho que a aplicação ficaria muito mais elegante se eu pudesse manipular (via System.algumacoisa) meu classpath pra mudar o que eu preciso…
Se mais alguém já brincou com isso ou sabe onde encontrar algo sobre, por favor poste aqui. No momento vou continuar a lidar e testar by myself,
Cara, tenho essa gambiarra para adicionar um jar ao classpath…
publicstaticvoidaddToClasspath(URLu)throwsIOException{URLClassLoadersysloader=(URLClassLoader)ClassLoader.getSystemClassLoader();Classsysclass=URLClassLoader.class;try{Methodmethod=sysclass.getDeclaredMethod("addURL",parameters);method.setAccessible(true);method.invoke(sysloader,newObject[]{u});}catch(Throwablet){t.printStackTrace();thrownewIOException("Error, could not add URL to system classloader");}}
peron
fabiofalci:
Cara, tenho essa gambiarra para adicionar um jar ao classpath....
publicstaticvoidaddToClasspath(URLu)throwsIOException{URLClassLoadersysloader=(URLClassLoader)ClassLoader.getSystemClassLoader();Classsysclass=URLClassLoader.class;try{Methodmethod=sysclass.getDeclaredMethod("addURL",parameters);method.setAccessible(true);method.invoke(sysloader,newObject[]{u});}catch(Throwablet){t.printStackTrace();thrownewIOException("Error, could not add URL to system classloader");}}
poderias colocar os imports corretos e também o que é essa variavel parameters que nao tá definida?
queria rodar isso ai, gostei muito desta soluçao dinamica.
obrigado
sds
fabiofalci
ta certo… ta ai a classe + imports
importjava.io.IOException;importjava.lang.reflect.Method;importjava.net.URL;importjava.net.URLClassLoader;publicclassUtil{privatestaticfinalClass[]parameters=newClass[]{URL.class};publicstaticvoidaddToClasspath(URLu)throwsIOException{URLClassLoadersysloader=(URLClassLoader)ClassLoader.getSystemClassLoader();Classsysclass=URLClassLoader.class;try{Methodmethod=sysclass.getDeclaredMethod("addURL",parameters);method.setAccessible(true);method.invoke(sysloader,newObject[]{u});}catch(Throwablet){t.printStackTrace();thrownewIOException("Error, could not add URL to system classloader");}}}