2010-06-09 73 views
5

有没有一种方法来重建在Java程序中传递给Java的命令行参数,包括JVM选项和类路径选项?我有一个Java程序,需要重新启动JVM并操纵它的bootclasspath(即试图覆盖某些系统类)。我使用libcsystem方法来调用新的JVM。重建java命令行参数

我打开更好的方法,但Java代理不是一个选项。

+0

我真的很好奇你在这里试图做什么...... – alex 2010-06-09 19:18:58

+0

是否有'ps -xxx'? – trashgod 2010-06-09 19:53:24

+0

@trashgod,它不可用于重用 – notnoop 2010-06-10 02:50:33

回答

1

为什么不使用具有这些属性的文件,就像Eclipse ini文件和NetBeans conf文件一样。这样你就可以阅读这些属性并用这些属性产生新的Java进程。

回到你的问题,这以前answer应该做

+0

谢谢! 'RuntimeMZBean.getInputArguments()'很好地解决了这个问题。 – notnoop 2010-06-09 20:28:59

-1

Err ...修改整个核心Java类运行时是一个非常非常糟糕的主意。

子类化在这里有什么问题?你想修改一个外部库,添加功能还是懒惰?

+0

为什么downvote? – TheLQ 2010-06-11 15:25:18

+0

欢迎来到互联网,朋友。 – 2015-11-01 01:06:52

0

我同意使用bootclasspath把玩通常是一个贫穷的想法。但是...

获取“java.c”的代码 - 编译为java.exe的C程序。你会发现它只是使用JNI Invocation API来构造一个JVM并调用主方法。您可以修改并重新编译此代码以查找特定的退出代码等,并在需要时循环并重新启动JVM。另外,Eclipse可以做到这一点(或者至少用于),但是有一个Java程序构造命令行(来自道具文件等)并启动一个子进程。同样,它钩住子流程退出代码并用它来决定是否重新启动新的子流程。