Получение результата Динамического выполнения Java-файла

Я использую метод ниже, чтобы выполнить файл с именем NewFile.java.

Строка thisMethod.invoke(instance,(Object)m); автоматически запускает NewFile.java и печатает результат [если существует] в консоли. Есть ли способ получить результат выполнения в строке

NB Тип: as (String) thisMethod.invoke(instance,(Object)m); не работает.. Это дает ноль.

public static void runIt(String fileToCompile,String packageName) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException, SecurityException, NoSuchMethodException
        {
            File file = new File(fileToCompile);

            try
            {
                URL url = file.toURL(); // file:/classes/demo
                URL[] urls = new URL[] { url };
                ClassLoader loader = new URLClassLoader(urls);
                Class<?> thisClass = classLoader.loadClass("NewFile");
                Object newClassAInstance = thisClass.newInstance();
                Class params[] = new Class[1];
                params[0]=String[].class;
                Object paramsObj[] = {};
                String m=null;
                Object instance = thisClass.newInstance();
                Method thisMethod = thisClass.getDeclaredMethod("main", params);
                r2+="method = " + thisMethod.toString();
                String methodParameter = "a quick brown fox";
               thisMethod.invoke(instance,(Object)m);

            }
            catch (MalformedURLException e)
            {
            }

        }

1 ответ

Возвращаемое значение из invoke Метод является объектом. Это означает, что она может возвращать строку, но также любое количество других значений или даже ноль.

Так что просто убедитесь, когда вы получите результат, который вы обрабатываете правильно.

Object result = thisMethod.invoke(instance,(Object)m);
if (result != null && (result instanceof String)){
    // my string result
}

Также убедитесь, что в методе вы вызываете, что вы не только что-то печатаете, но и возвращаете нужное значение.

Другие вопросы по тегам