Реконструкция аргументов командной строки Java - PullRequest
5 голосов
/ 09 июня 2010

Есть ли способ восстановить аргументы командной строки, передаваемые Java в программе Java, включая параметры JVM и параметр classpath?

У меня есть программа Java, которая должна перезапустить JVM и манипулировать ее bootclasspath(т.е. пытается переопределить некоторые системные классы).Я использую метод libc system для вызова новой JVM.

Я открыт для лучших подходов, но Java-агенты не вариант.

Ответы [ 3 ]

1 голос
/ 09 июня 2010

Почему бы не использовать файл с такими свойствами, как файл Eclipse ini и файлы NetBeans conf .Таким образом, вы просто читаете эти свойства и запускаете новый Java-процесс с этими свойствами.

Возвращаясь к вашему вопросу, этот предыдущий ответ должен сделать

0 голосов
/ 09 июня 2010

Я согласен с тем, что слияние с bootclasspath - плохая идея. Но ...

Получите код для "java.c" - программы на C, которая компилируется в java.exe. Вы обнаружите, что он просто использует API вызова JNI для создания JVM и вызова метода main. Вы можете изменить и заново скомпилировать это, чтобы найти определенные коды выхода и т. Д., А затем обойти и перезапустить JVM, если потребуется.

В качестве альтернативы Eclipse делает это (или, по крайней мере, раньше), но с помощью одной Java-программы создает командную строку (из файла props и т. Д.) И запускает подпроцесс. Опять же, он перехватил код завершения подпроцесса и использовал его, чтобы решить, стоит ли перезапускать новый подпроцесс.

0 голосов
/ 09 июня 2010

Ошибка ... изменение всего базового Java-класса в время выполнения - очень и очень плохая идея.

Что не так с подклассами здесь? Вы пытаетесь изменить внешнюю библиотеку, добавить функциональность или быть ленивым?

...