一个在ksh中运行java程序的例子

本文详细介绍了如何在KSH shell中运行Java程序,包括设置虚拟机内存选项(Xms和Xmx)、系统属性(如-Dtest.mode=false)、指定类路径以及传递参数给main方法。通过-D参数传递系统属性,可以方便地在启动时设定程序配置。在Eclipse中,VM arguments用于设置system.properties参数和虚拟机配置,而program arguments则用于传递给main方法的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java -Xms128m -Xmx128m -Dtest.mode=false -DConfigFolder=$codeHome/config -cp ${CLASSPATH} com.*.*.ClassName $instanceHome $1 $2 $3

 

首先:

The java tool launches a Java application. It does this by starting a Java runtime environment, loading a specified class, and invoking that class's main method.

 

The launcher has a set of standard options that are supported on the current runtime environment and will be supported in future releases. In addition, the default Java HotSpot VMs provide a set of non-standard options. The non-standard options are subject to change in future releases.

 

第一部分-Xms128m -Xmx128m

这个属于non-standard options。

可参考

http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/java.html

 

第二部分-Dtest.mode=false -DConfigFolder=$codeHome/config

这个需要参考一下System类下的getProperties方法。作用是determines the current system properties.

实际程序里用设置system properties来达到传递参数的目的。在launch程序时用-D传入参数(键值对的形式),在程序代码中的,某处get properties,就可以了。这样做的好处是传递参数比在main函数中传递简单,随传随用。其他好处不知道。

在程序中这样使用:configFolder = System.getProperty("ConfigFolder");

另外一点,在eclipse中运行一个程序时,可以设置两种参数:

program arguments:这个是main函数中传递进去的参数。

VM arguments:system.properties参数应该写在这个地方。还有前面说到的对虚拟机的设置等也应该在这个地方。

 

第三部分-cp ${CLASSPATH} com.*.*.ClassName $instanceHome $1 $2 $3

-cp classpath 是java tool的参数。顾名思义,后面紧跟的 com.*.*.ClassName就是我们实际要运行的类了。而 $instanceHome $1 $2 $3则是传递到这个类的main函数的参数:

public static void main(String[] args) {

        File instanceHome = new File(args[0]);

        boolean Mode = (args.length == 2) && FORCE_PARAM.equals(args[1]);

...

}

当然了,$instanceHome $1 $2 $3的具体取值是ksh传入的。

 

所以在java代码中可以包含多个main函数(只要不产生混乱就行)。。。但是我们必须在运行时,明确的告诉虚拟机要运行哪一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值