我希望有人可以帮我这个...这是一个新手问题,但不幸的是我有点被困在这里。
目前我正在启动我的java应用程序,如(cmd):
现在这是所有类路径之后的调用部分。
%JAVA_HOME%bin \ java.exe -cp%CLASSPATH%;%SCRIPTROOT%jar * -XX:MaxPermSize = 1024M view.Main C:\ temp \ MyDatabase C:\ TEMP \ myfile.xml中 的
第一个arg: C:\ TEMP \ MyDatabase的
第二个arg: C:\ TEMP \ myfile.xml中
public static void init(String[] args){
try {
mydatabase = args[0];
} catch (Exception ex) {
}
try {
myfile = args[1];
} catch (Exception ex) {
}
}
现在在这种情况下,参数的顺序是相关的。 只有两个参数,这可能就好了,但是我应该做什么,如果我有10个参数,其中一些是可选的?这将是一个问题,对吗?
如果我做这样的事情怎么办? %JAVA_HOME%bin \ java.exe -cp%CLASSPATH%;%SCRIPTROOT%jar * -XX:MaxPermSize = 1024M view.Main database:/ C:\ temp \ MyDatabase myfile:/ C:\ TEMP \ myfile.xml中
现在在我的代码中,顺序将不再重要,因为我喜欢参数的“键值对”,并且键标识了值的实际“使用”。这有效,但感觉不对。
有更好的方法吗? 也许像 java.exe 一样用 -cp 来做?如果是,我该如何实现呢?
谢谢。
答案 0 :(得分:1)
您需要java.util.Properties。
将它们传递给java进程添加-D
:
java -jar my-app.jar -Dfile=C:\temp\MyFile.xml -Ddatabase=C:\temp\MyDatabase
现在订单无所谓。使用System.getProperties()静态方法获取args,它还有卫星System.getPropery(String key)
和System.getPropery(String key, Object default)
。
对于高级选项,请查看Apache Commons CLI和类似的库。