Получить поля из отдельно запущенной банки - PullRequest
0 голосов
/ 11 июля 2019

Я знаю, что это довольно общий характер, но есть ли у меня способ запустить jar, а затем использовать совершенно разные поля доступа к java-программам из этого запущенного jar?Я хотел бы в конечном итоге установить текст известного JTextField (я знаю имя JTextField и класса).Я знаю, как я мог бы сделать это с отражением, если бы все это работало как одно целое, но я не могу найти способ получить Object, содержащий экземпляр работающего фляги, который вам нужен.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Это не лучшее решение, но вы могли бы переопределить класс на пути к классу запущенного JAR без "фактического" изменения JAR.

Допустим, вы хотите изменить com.someone.elses.ClassA.Я бы начал с копирования этого файла класса и декомпиляции его, внесения изменений, а затем перекомпиляции его как моей собственной версии, но с точно таким же путем к классу.

Когда вы запускаете их JAR, вы можете дать свою версию класса вышеприоритет на пути к классам, поэтому он будет загружен вместо их.

java -cp "your.class:their.jar" path.to.their.Main

После этого программа будет работать с вашим измененным классом, предоставляя вам доступ ко всему, что вам нужно, и, возможно, к чтению из переменных среды.

0 голосов
/ 11 июля 2019

Каждый из запущенных процессов Java создает свою собственную виртуальную машину со своими загрузчиками классов и классами, они также изолированы самой ОС.
Чтобы иметь возможность общаться, вы можете создать ServerSocket в программе 1 и прослушивать данные /команды.А второй может подключиться к первому с помощью Socket и отправить определенные команды, которые будут интерпретироваться первым.По сути, вы должны использовать какой-то канал связи и передавать данные между программами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...