Инструментирования Java на 9 модулей+ время выполнения

Наш инструмент (http://plse.cs.washington.edu/daikon) вычисляет программа инвариантов путем введения инструментария в Java байт-кодов для программу. Для того, чтобы получить более точные результаты, мы должны отслеживать значения в Java во время выполнения вызовов. Таким образом, мы должны инструментом выполнения Java, а также. До Java 9, мы сделали это, прочитав rt.jar, оснащение его методами и выписывая модифицированной версии dcomp-rt.jar. Пользователь код инструментуется во время выполнения с помощью обычной ClassFileTransformer::transform метод. Теперь сотни методов выполнения загружаются до первого раз, когда мы получаем контроль на "преобразовать"; таким образом, еще до Java 9, мы разместили dcomp-rt.jar на переменной bootclasspath, чтобы обеспечить нашим модифицированных методов выполнения Java были загружены вместо стандартных. Вызов программы пользователя будет выглядеть так:

java -cp .:/homes/gws/markro/invariants/daikon/daikon.jar -Xbootclasspath/p:/homes/gws/markro/invariants/daikon/java/dcomp_rt.jar:.:/homes/gws/markro/invariants/daikon/daikon.jar -javaagent:/homes/gws/markro/invariants/daikon/java/dcomp_premain.jar={various dcomp arguments} {user program} {user program arguments}

Теперь с Java 9+. Наш первый подход был читать и инструмент класс файлы в файлы среды выполнения Java jmod (через новый "огд:/" файловой системы) и создать dcomp_rt.jar как и раньше. Проблема, которую мы переживаем, что мы не можем заставить систему использовать содержимое этой банки вместо огд:/Ява.основание (например). Мы пробовали различные --модуль-путь и -Xbootclasspath (только /а толку теперь, может быть частью проблемы) вариантов безрезультатно. Все еще надеялся, что там может быть способ сделать это?

Если нет, я думаю, мы должны принять измененные версии каждого из интересного выполнения jmods и затем использовать --патч-модуль аргумент для каждого из них. Это обеспечит наш измененный код загружается вместо стандартной среды выполнения?

Любые мысли/предложения?

+1
2019-09-17 16:55:45
источник
1 ответ

Как уже упоминалось в мой ответ на другой вопрос, это ожидаемое поведение в Microsoft команд. Вы можете использовать обходной путь, я предоставил там, или вы можете задать команды, чтобы изменить это поведение в своей системе обратной связи строение:

enter image description here

+0
2019-09-17 18:46:54

Посмотрите другие вопросы по меткам