我正在Eclipse中处理一个Java项目,现在我想将星号*
作为命令行参数传递给main。我知道这是一个通配符符号,在每个shell中,只要把它放在引号中就可以很好地工作,所以我输入java MyProgram *
而不是java MyProgram "*"
。
在Eclipse(Run Cofigurations -> Arguments)中,它不起任何作用,即使有引号,它也只是列出目录中的所有文件。'*'
中的单引号与a*a
或其他东西的工作方式相同,这意味着单引号(或撇号)也将被传递到字符串中。
有什么想法如何让*
进入主?
4条答案
按热度按时间7z5jn7bk1#
Eclipse将 * 展开为属性名列表。因此,程序实际上(在我的系统上)传递了一个args数组:.classpath,.project,.settings,.bin,.src而不是 * .
如果我把任何文本与 ,如“X”,那么我得到“X*”。
双引号没有帮助。用斜线转义也不行。
从shell它工作得很好,虽然在Windows上至少有一个警告,你确实需要把它放在引号里。Windows将在程序获取引号之前剥离引号。
但是在Eclipse下,我找不到允许只传递 * 的变通方法。
5w9g7ksd2#
对于遇到同样问题的任何人,您需要将其写为“*”,以便Eclipse将其作为 * 传递
jv2fixgn3#
从“运行”下拉菜单中选择“运行配置”。
转到参数选项卡。
勾选@argfile框。
dsf9zpds4#
这是你自己程序中的一个程序错误。Eclipse将主参数逐字传递给您的程序。你可以通过创建一个在main中只有这一行的Java程序来轻松地检查这一点:
字符串
并在运行配置中将星号作为唯一参数传递给该程序。打印单个星号字符的。