![]() |
1
4
除了以某种方式进行主要操作之外,我认为唯一的其他选择是转到操作系统级别并执行一些命令来获取参数。 在Linux上,正在运行的进程的命令行参数存储在 /PRO/ PID /CMDLIN 因此,要获得它们,您必须找到进程ID。请参见以下内容: How can a Java program get its own process ID? 然后用这个打开 /PRO/ PID /CMDLIN 然后分析一下。此文件的格式和C中的一个示例如下: 最好将这两个调用封装在一个shell脚本中,从Java调用。 请注意,这将是非常不便携,有点黑客。但如果需要的话… |
![]() |
2
4
一旦您意识到Java的主要方法只是以字符串数组作为参数的另一个静态方法,那么解决方案很简单。 创建一个存储CLP的新类,然后调用旧类。稍后,您可以使用新类访问CLP:
} 最后,更改任何外部调用程序(例如任何批处理文件)以使用MyMainclass而不是NotToBechChangedMainclass。如果您使用的是不可运行的JAR或类似文件,则需要更改相应的配置文件。 |
![]() |
3
1
创建自己的主类。保存参数。叫老
可能更容易使用
|
![]() |
4
1
如果您没有选择,那么您必须保留所有现有类名及其确切名称。( as stated in your comment 我之前的回答),那么你必须和Aspectj一起去。 我们来考虑一下这门课:
首先,您需要保存命令行参数。为了简单起见,我将使用带有静态字段的简单类:
然后,您需要定义一个方面来拦截对main的调用并存储参数。
为了尝试,我还创建了一个ClassusingargumEntreRegistry:
就这样。如果我启用AspectJ的编译时间编织,并使用“Java unMuffyabLabsAccess主FooBar BAZ”运行结果,我得到了如下的输出:
|
![]() |
5
0
注意,这个解决方案非常有限,因为Linux会截断它保存的命令行。由于Java命令行通常有很长的分支,这是一个非常现实的问题。 下面是Java代码实现Pablojim给出的答案。
在Eclipse中用参数“foo bar”运行这个程序,我可以得到:
|
|
user29759326 · 如何返回递归函数中的最后一个值? 6 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 6 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 6 月前 |
![]() |
rudraraj · java中未声明最终变量 7 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 7 月前 |