Строка времени выполнения внедрения и выполнения кода JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Строка времени выполнения внедрения и выполнения кода Java

Сообщение Anonymous »


Я пытаюсь внедрить существующий код и выполнить строку дополнительного Java-кода, который использует классы, определенные в моем проекте, и манипулирует данными, предоставленными в моем «скомпилированном» коде. Я пробовал использовать beanshell, но у меня возникли некоторые проблемы с использованием уже существующих классов (кроме проблем с использованием лямбда-функций, оператора алмаза,...). Я знаю, что это совсем небезопасно, но я использую это в целях тестирования. Вот как сейчас выглядит мой код:

DiscoverViewModel viewModel = новый ViewModelProvider(viewModelStoreOwner).get(DiscoverViewModel.class); пытаться { ArrayListвещи = новый ArrayList(); viewModel.getAllThingsLiveData().observe((LifecycleOwner) контекст, вещи::addAll); Map потребляемыйThingMap = новый HashMap(); для (EntityConsumedThings t: вещи) { ConsumedThing ConsumerThing = WotInteraction.getInstance(context).getWot().consume(Thing.fromJson(t.thingJSON)); потребляемыйThingMap.put(consumedThing.getId(), потребляемыйThing); } } catch (WotException | JSONException ex){ ex.printStackTrace(); } // ПРИМЕР КОДА — ОН БУДЕТ АВТОГЕНЕРИРУЕТСЯ И ПОЛУЧЕН С СЕРВЕРА Строковый код = "ConsumedThing ConsumerThing = ConsumerThingsMap.get(\"urn:uuid:92e5b68f-322a-433a-8cff-f50f6ca1b519\");" + "if(consumedThing!=null){" + "Свойство ConsumedThingProperty = ConsumerThing.getProperty(\"resources\");" + "property.read();\n" + "} еще {\n" + " System.out.println(\"ОШИБКА ВЫПОЛНЕНИЯ: Объект не найден.\");\n" + " }\n;"; // ВЫПОЛНИТЬ КОД ЗДЕСЬ В моем проекте определены классы ConsumedThing, ConsumedThingProperty. Есть ли способ сделать то, что я пытаюсь сделать, или это невозможно? Заранее спасибо, кто мне ответит.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»