@LooKs escreveu:
oi, estou com um dificuldade para passar um array como parâmetro para o jar que esta sendo carregado dinamicamente.Tento arrumar mas sempre acabo caindo nos erros de
- java.lang.IllegalArgumentException: argument type mismatch
- java.lang.IllegalArgumentException: wrong number of arguments
classe que carrega o objeto e invoca o .jar:
public class ClassLoad { public static void main(String[] args) throws InvocationTargetException { String filePath; filePath = new String("C:\\Users\\lucas.oliveira\\Desktop\\HelloWorld.jar"); URL myJarFile = null; try { myJarFile = new URL("file:///"+filePath); } catch (MalformedURLException e1) { System.out.println("1"); e1.printStackTrace(); } URLClassLoader cl = URLClassLoader.newInstance(new URL[]{myJarFile}); Class Jarred = null; try { Jarred = cl.loadClass("helloworld.HelloWorld"); } catch (ClassNotFoundException e) { System.out.println("2"); e.printStackTrace(); } Method simpleWrite = null; try { simpleWrite = Jarred.getMethod("main", new Class[] {String[].class}); } catch (SecurityException e) { System.out.println("3"); e.printStackTrace(); } catch (NoSuchMethodException e) { System.out.println("4"); System.out.println(e.getMessage()); //e.printStackTrace(); } Object JarredObj = null; try { JarredObj = Jarred.newInstance(); } catch (InstantiationException e) { System.out.println("5"); e.printStackTrace(); } catch (IllegalAccessException e) { System.out.println("6"); e.printStackTrace(); } String[] nome = new String[2]; nome[0] = "Lucas"; nome[1] = "Oliveira"; try { Object response = simpleWrite.invoke(JarredObj, "lucas", ""); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }
.jar que é invocado:
public void main(String[] args) { args = new String[2]; JOptionPane.showConfirmDialog(null, "Ola: " + args[0] + ":" + args[1]); }
Mensagens: 4
Participantes: 3