【问题标题】:Reconstruction of java command line argumentsjava命令行参数的重构
【发布时间】:2010-06-09 19:11:32
【问题描述】:

有没有办法在 Java 程序中重构传递给 Java 的命令行参数,包括 JVM 选项和类路径选项?

我有一个 Java 程序需要重新启动 JVM 并操作其引导类路径(即尝试覆盖某些系统类)。我使用libcsystem方法来调用新的JVM。

我愿意接受更好的方法,但 Java 代理不是一个选项。

【问题讨论】:

  • 我真的很好奇你想在这里做什么......
  • @trashgod,不,它不可重复使用
  • @alex,我正在尝试在插件环境中获得一些(次要)Java 7 特定功能,同时减少安装说明。查看types.cs.washington.edu/checker-framework

标签: java arguments command-line-interface


【解决方案1】:

为什么不使用具有这些属性的文件,就像 Eclipse ini 文件和 NetBeans conf 文件一样。这样,您只需读取这些属性并使用这些属性生成新的 Java 进程。

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

【讨论】:

  • 谢谢! RuntimeMZBean.getInputArguments() 很好的解决了这个问题。
【解决方案2】:

我同意使用引导类路径通常是一个糟糕的主意。但是……

获取“java.c”的代码 - 编译成 java.exe 的 C 程序。您会发现它只是使用 JNI Invocation API 来构造一个 JVM 并调用 main 方法。您可以修改并重新编译它以查找特定的退出代码等,并在需要时循环并重新启动 JVM。

另外,Eclipse 会这样做(或至少曾经这样做过),但让一个 Java 程序构建命令行(从 props 文件等)并启动子进程。再次,它钩住了子流程退出代码,并用它来决定是否重新启动一个新的子流程。

【讨论】:

    【解决方案3】:

    Err...在 runtime 修改整个核心 java 类是一个非常非常糟糕的主意。

    这里的子类化有什么问题?您是在尝试修改外部库、添加功能还是偷懒?

    【讨论】:

    • 欢迎上网,朋友。
    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2017-03-04
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多