Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!usenet.ukfsn.org!not-for-mail From: Martin Gregorie Newsgroups: comp.lang.java.programmer Subject: Re: Command-line options in a jar file Date: Sat, 21 Apr 2012 21:21:07 +0000 (UTC) Organization: UK Free Software Network Lines: 32 Message-ID: References: <4f93064c$0$5461$c3e8da3$eb767761@news.astraweb.com> NNTP-Posting-Host: 84.45.235.129 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: localhost.localdomain 1335043267 16010 84.45.235.129 (21 Apr 2012 21:21:07 GMT) X-Complaints-To: usenet@localhost.localdomain NNTP-Posting-Date: Sat, 21 Apr 2012 21:21:07 +0000 (UTC) User-Agent: Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 30dc37b master) Xref: csiph.com comp.lang.java.programmer:13759 On Sat, 21 Apr 2012 15:11:14 -0400, Hiram Hunt wrote: > Is there a way to pass command-line options to java.exe with an > executable jar file? The "Jar tool reference page for Windows" seems to > say that the -J option should do it, but when I try it out, the option > is sent to the java virtual machine when I run the jar command, not when > I run the executable jar file. I want to send -Xmxn and -Dthis=that > options to java.exe. > Use the "Main-Class: full.class.name" directive in the jarfile's manifest to select the program to be executed and then run it with the command: java -jar jarfile_absolute_name arguments... which passes the argument list to "static void main(String[] args) in full.class.name via args. If you need to pass options to the JVM, they are put in front of the -jar option. If I want to be able to choose one candidate program out of several in the jar file, I use the Main-Class to run a simple launcher program and pass it the program name as its first argument. The launcher program uses Class.forName() to load the required program and then starts it by calling a method, which must not have the "static void main(String[])" signature. I typically use via a method with the "void run(String[] args)" signature and pass it all the command line arguments except the first via args. -- martin@ | Martin Gregorie gregorie. | Essex, UK org |