我正在调试一个大型系统中的问题。我在一个相当基本的java特性中找到了这个问题--这个应用程序是用-D选项启动的,以指定一些系统属性。但是,在运行期间,没有设置上述属性,它们的值为null.
为了重现这个问题,我创建了以下非常简单的应用程序:
public static void main(String[] args) {
String propName = "sysprop";
String propValue = System.getProperty(propName);
System.out.println(propName + "=" + propValue);
}我使用以下命令行启动应用程序,令我惊讶的是得到了相同的结果:
java -cp javaapplication8.jar javaapplication8.JavaApplication8 -Dsysprop=“一些值” sysprop=null
显然,我遗漏了一些显而易见的东西(或缺乏一些基本知识),但它是什么呢?
谢谢。
发布于 2012-11-21 15:16:04
您是在类名之后指定-D的,因此它被视为要传递给应用程序本身的常规命令行参数。如果在args中打印出这些值,您就会看到这一点。
像这样运行这个应用程序:
java -cp javaapplication8.jar -Dsysprop="some value" javaapplication8.JavaApplication8 所有适用于环境而不是应用程序的参数都应该放在类名之前。如果您只运行java,您将看到这样的使用帮助:
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include
[...]https://stackoverflow.com/questions/13496226
复制相似问题