java - 在 Java 中,有没有办法获取命令行参数,即使 main() 没有保存它们?

标签 java command-line-arguments

我们有一个带有 main() 的程序,它解析某些 CLP,但不会将它们保存在任何地方。 然后我有自己的插件代码,需要访问原始 CLP(以便我可以传输更多参数)。但是,我无法更改 main()

I saw that there is apparently a way to do this in C# ,我正在 Linux 上寻找等效的 Java 解决方案。

更新:显然,我知道 main() 的工作原理。遗憾的是,我无法更改现有应用程序或它的调用方式(CLP 除外)。我只能通过沙盒插件代码访问。我的问题是是否有办法获取调用 JVM 的命令行(而不是带 -D 的环境变量)。

最佳答案

除了以某种方式在 main 中执行此操作之外,我认为您唯一的其他选择是下降到操作系统级别并执行一些命令来获取参数。

在 Linux 上,运行进程的 cmd 行参数存储在 /proc/pid/cmdline

因此,要获得它们,您必须找到进程 ID。看这里:

How can a Java program get its own process ID?

然后使用这个打开的/proc/pid/cmdline 并解析它。此文件的格式和 c 中的示例位于此处:

http://www.unix.com/unix-advanced-expert-users/86740-retrieving-command-line-arguments-particular-pid.html

最好将这两个调用包装在您从 java 调用的一个 shell 脚本中。

请注意,这将是非常不可移植的,而且有点老套。但如果需要必须...

关于java - 在 Java 中,有没有办法获取命令行参数,即使 main() 没有保存它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1058531/

相关文章:

java - GIF 在游戏鼠标移动时停止动画

java - 具有反向关系的通用接口(interface)

python - 在 shell 命令替换中调用 Python 脚本时,将输入提示与返回值分开

python - ArgumentParser -h 在 parse_known_args 之后不打印选项

maven-2 - 在 Maven 构建参数中指定 jar 文件

java - 如何在 JPanel 中移动图像

java - 如何从另一个类及其上下文调用函数(android,java)

java - 在java中解析嵌套的json数组

c - 我在哪里可以获得命令行参数?

c - 在 C 程序中使用 arg[v] 命令行参数