我正在整合Apple Reporter.jar以下载我的应用销售报告,但它抱怨我的论点太少或太多。
Too few or too many parameters specified for the method. Call ApplicationName.getHelp for a list of valid methods and their parameters.
当我致电Sales.getHelp
时,它告诉我params应该是:
Usage: java -jar Reporter.jar p=[properties file] m=["Normal"|"Robot.XML"] a=[account number] Sales.[command] [arguments]
where commands include:
getHelp: Returns this help message. No arguments.
getStatus: Returns status of Sales and Trends application. No arguments.
getAccounts: Returns list of available accounts. No arguments.
getVendors: Returns list of available vendor numbers. No arguments.
getReport: Downloads a report. Arguments: Vendor Number, Report Type, Report Subtype, DateType, Date.
所以,如果我想执行Sales.getReport
命令,似乎我需要以下参数:
java -jar Reporter.jar p=[properties file] m=["Normal"|"Robot.XML"] a=[account number] Sales.getReport Vendor_Number Report_Type Report_Subtype DateType Date
这是我使用的命令(带有我通过Reporter获得的真实账号和供应商号码):
java -jar Reporter.jar p=Reporter.properties m="Normal" a="XXXXXX" Sales.getReport YYYYYYY Sales Summary Daily 20170130
据我所知,所有这些都匹配得恰到好处:
1) java -jar Reporter.jar | java -jar Reporter.jar
2) p=[properties file] | p=Reporter.properties
3) m=["Normal"|"Robot.XML"] | m="Normal"
4) a=[account number] | a="XXXXXX"
5) Sales.getReport | Sales.getReport
6) Vendor_Number | YYYYYYY
7) Report_Type | Sales
8) Report_Subtype | Summary
9) DateType | Daily
10) Date | 20170130
我尝试在最后添加一个额外的asdf
以查看它是否需要一个更多的参数,但它给了我相同的消息。然后我尝试删除params,它一直给我同样的错误信息,直到我删除Sales.getReport
。
我做错了什么或者他们的错误信息是完全错误/无益吗?
答案 0 :(得分:3)
好的,无论Apple工程师创建的Reporter.jar都需要被解雇。
问题是我需要在命令行参数之间放置COMMAS。在命令行使用历史中绝对没有其他命令行用法。似乎Sales.getReport
之后的所有内容都被代码淹没,一起粉碎成一个字符串,然后用逗号分割,然后只检查参数。
因为我甚至尝试将"YYYYYYY Sales Summary Daily 20170130"
作为单个字符串发送,以测试我的假设,即它需要一个命令行参数,但这并不起作用。
这是最终为我工作的命令:
java -jar Reporter.jar p=Reporter.properties m="Normal" a="XXXXXX" Sales.getReport YYYYY, Sales, Summary, Daily, 20170129
我不知道那些苹果工程师在设计时会想到什么,但他们应该被解雇。我希望Apple工程师能够成为最好的工程师,但这是业余的,并且不了解所有标准的命令行实践。</rant>