Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
java(1)			    General Commands Manual		       java(1)

Name
       java - the Java application launcher

SYNOPSIS
       java [ options ]	class [	argument ... ]
       java [ options ]	-jar file.jar [	argument ... ]

	  options
	     Command-line options. See Options.

	  class
	     The name of the class to be called.

	  file.jar
	     The  name	of  the	JAR file to be called. Used only with the -jar
	     command.

	  argument
	     The arguments passed to the main function.

DESCRIPTION
       The java	command	starts a Java application. It does this	by starting  a
       Java  runtime  environment, loading a specified class, and calling that
       class's main method.

       The method must be declared public and static, it must not  return  any
       value,  and  it	must  accept a String array as a parameter. The	method
       declaration has the following form:

       public static void main(String args[])

       By default, the first argument without an option	is  the	 name  of  the
       class to	be called. A fully qualified class name	should be used.	If the
       -jar option is specified, then the first	 non-option  argument  is  the
       name of a JAR file containing class and resource	files for the applica-
       tion, with the startup  class  indicated	 by  the  Main-Class  manifest
       header.

       The  Java  runtime  searches  for  the startup class, and other classes
       used, in	three sets of locations: the bootstrap	class  path,  the  in-
       stalled extensions, and the user	class path.

       Non-option  arguments  after the	class name or JAR file name are	passed
       to the main function.

OPTIONS
       The launcher has	a set of standard options that are  supported  in  the
       current runtime environment.

       In  addition,  the current implementations of the virtual machines sup-
       port a set of nonstandard options that are subject to change in	future
       releases. See Nonstandard Options.

   Standard Options
	  -client
	     Selects  the  Java	 HotSpot  Client VM. A 64-bit capable JDK cur-
	     rently ignores this option	and  instead  uses  the	 Java  Hotspot
	     Server VM.
	     For default Java VM selection, see	Server-Class Machine Detection
	     at			    http://docs.oracle.com/javase/7/docs/tech-
	     notes/guides/vm/server-class.html

	  -server
	     Selects the Java HotSpot Server VM. On a 64-bit capable JDK, only
	     the Java Hotspot Server VM	is supported so	the -server option  is
	     implicit.
	     For  default a Java VM selection, see Server-Class	Machine	Detec-
	     tion	 at	    http://docs.oracle.com/javase/7/docs/tech-
	     notes/guides/vm/server-class.html

	  -agentlib:libname[=options]
	     Loads native agent	library	libname, for example:
	     -agentlib:hprof

	     -agentlib:jdwp=help

	     -agentlib:hprof=help
	     See   JVMTI   Agent   Command-Line	 Options  at  http://docs.ora-
	     cle.com/javase/7/docs/platform/jvmti/jvmti.html#starting

	  -agentpath:pathname[=options]
	     Loads a native agent library by full  pathname.  See  JVMTI  Com-
	     mand-Line	Options	 at http://docs.oracle.com/javase/7/docs/plat-
	     form/jvmti/jvmti.html#starting

	  -classpath classpath,	-cp classpath
	     Specifies a list of directories, JAR files, and ZIP  archives  to
	     search  for  class	files. Separate	class path entries with	colons
	     (:). Specifying -classpath	or -cp overrides any  setting  of  the
	     CLASSPATH environment variable.
	     If	-classpath and -cp are not used	and CLASSPATH is not set, then
	     the user class path consists of the current directory (.).
	     As	a special convenience, a class path element  that  contains  a
	     base  name	 of * is considered equivalent to specifying a list of
	     all the files in the directory with the extension .jar or .JAR. A
	     Java  program  cannot tell	the difference between the two invoca-
	     tions.
	     For example, if directory mydir contains a.jar  and  b.JAR,  then
	     the  class	path element mydir/* is	expanded to a A.jar:b.JAR, ex-
	     cept that the order of jar	files is unspecified. All jar files in
	     the  specified  directory,	 even hidden ones, are included	in the
	     list. A class path	entry consisting simply	of * expands to	a list
	     of	 all the jar files in the current directory. The CLASSPATH en-
	     vironment variable, where defined,	will  be  similarly  expanded.
	     Any  class	 path  wildcard	expansion occurs before	the Java VM is
	     started. No Java program will ever	see wild cards	that  are  not
	     expanded  except  by  querying  the  environment. For example, by
	     calling System.getenv("CLASSPATH").

	  -Dproperty=value
	     Sets a system property value.

	  -d32
	     Run the application in a 32-bit environment. If a 32-bit environ-
	     ment  is  not installed or	is not supported, an error will	be re-
	     ported. By	default, the application is run	in a  32-bit  environ-
	     ment unless a 64-bit only system is used.

	  -d64
	     Run the application in a 64-bit environment. If a 64-bit environ-
	     ment is not installed or is not supported,	an error will  be  re-
	     ported.  By  default, the application is run in a 32-bit environ-
	     ment unless a 64-bit only system is used.
	     Currently only the	Java HotSpot Server VM supports	64-bit	opera-
	     tion,  and	 the  -server option is	implicit with the use of -d64.
	     The -client option	is ignored with	the use	of -d64. This is  sub-
	     ject to change in a future	release.

	  -disableassertions[:package  name"..." | :class name ], -da[:package
	  name"..." | :class name ]
	     Disable assertions. This is the default.
	     With no arguments,	-disableassertions or -da disables assertions.
	     With one argument ending in "...",	the switch disables assertions
	     in	the specified package and any subpackages. If the argument  is
	     "...", then the switch disables assertions	in the unnamed package
	     in	the current working directory. With one	argument not ending in
	     "...", the	switch disables	assertions in the specified class.
	     To	 run  a	 program  with	assertions enabled in package com.wom-
	     bat.fruitbat but disabled in class	 com.wombat.fruitbat.Brickbat,
	     the following command could be used:
	     java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat <Main Class>
	     The  -disableassertions and -da switches apply to all class load-
	     ers and to	system classes (which do not  have  a  class  loader).
	     There  is	one exception to this rule: in their no-argument form,
	     the switches do not apply to system. This makes it	easy  to  turn
	     on	 asserts  in  all classes except for system classes. The -dis-
	     ablesystemassertions option provides a separate swith  to	enable
	     assertions	in all system classes.

	  -enableassertions[:package  name"..."	 | :class name ], -ea[:package
	  name"..." | :class name ]
	     Enable assertions.	Assertions are disabled	by default.
	     With no arguments,	-enableassertions or -ea  enables  assertions.
	     With  one argument	ending in "...", the switch enables assertions
	     in	the specified package and any subpackages. If the argument  is
	     "...",  then the switch enables assertions	in the unnamed package
	     in	the current working directory. With one	argument not ending in
	     "...", the	switch enables assertions in the specified class.
	     If	  a  single  command  contains	multiple  instances  of	 these
	     switches, then they are processed in  order  before  loading  any
	     classes.  So,  for	 example, to run a program with	assertions en-
	     abled only	in package com.wombat.fruitbat (and any	 subpackages),
	     the following command could be used:
	     java -ea:com.wombat.fruitbat... <Main Class>
	     The -enableassertions and -ea switches apply to all class loaders
	     and to system classes (which do not have a	class  loader).	 There
	     is	 one  exception	 to  this rule:	in their no-argument form, the
	     switches do not apply to system. This makes it easy  to  turn  on
	     asserts in	all classes except for system classes. The -enablesys-
	     temassertions option provides a separate switch to	enable	asser-
	     tions in all system classes.

	  -enablesystemassertions, -esa
	     Enable  assertions	in all system classes (sets the	default	asser-
	     tion status for system classes to true).

	  -disablesystemassertions, -dsa
	     Disables assertions in all	system classes.

	  -help	or -?
	     Displays usage information	and exit.

	  -jar
	     Executes a	program	encapsulated in	a JAR file. The	first argument
	     is	 the  name  of a JAR file instead of a startup class name. For
	     this option to work, the manifest of the JAR file must contain  a
	     line  in  the form	Main-Class: classname. Here, classname identi-
	     fies the class with the public static  void  main(String[]	 args)
	     method that serves	as your	application's starting point.
	     When  you use this	option,	the JAR	file is	the source of all user
	     classes, and other	user class path	settings are ignored.
	     JAR files that can	be run with the	 java  -jar  option  can  have
	     their  execute  permissions  set so they can be run without using
	     java  -jar.   See	 JAR   File   Overview	 at   http://docs.ora-
	     cle.com/javase/7/docs/technotes/guides/jar/jarGuide.html

	  -javaagent:jarpath[=options]
	     Loads  a  Java  programming  language agent. For more information
	     about instrumenting Java applications, see	the  java.lang.instru-
	     ment package description in the Java API documentation at
	     http://docs.oracle.com/javase/7/docs/api/java/lang/instru-
	     ment/package-summary.html @
	     http://docs.oracle.com/javase/7/docs/api/java/lang/instru-
	     ment/package-summary.html

	  -jre-restrict-search
	     Includes user-private JREs	in the version search.

	  -no-jre-restrict-search
	     Excludes user-private JREs	in the version search.

	  -showversion
	     Displays version information and continues.

	  -splash:imagepath
	     Shows splash screen with image specified by imagepath.

	  -verbose, -verbose:class
	     Displays information about	each class loaded.

	  -verbose:gc
	     Reports on	each garbage collection	event.

	  -verbose:jni
	     Reports information about use of native methods and other Java
	     Native Interface activity.

	  -version
	     Displays version information and exits. See also the -showversion
	     option.

	  -version:release
	     Specifies that the	version	specified by the release is required
	     by	the class or JAR file specified	on the command line. If	the
	     version of	the java command called	does not meet this specifica-
	     tion and an appropriate implementation is found on	the system,
	     then the appropriate implementation will be used.
	     The release option	specifies an exact version and a list of ver-
	     sions called a version string. A version string is	an ordered
	     list of version ranges separated by spaces. A version range is
	     either a version-id, a version-id followed	by an asterisk (*), a
	     version-id	followed by a plus sign	(+), or	a version range	that
	     consists of two version-ids combined using	an ampersand (&). The
	     asterisk means prefix match, the plus sign	means this version or
	     greater, and the ampersand	means the logical and of the two ver-
	     sion-ranges, for example:
	     -version:"1.6.0_13	1.6*&1.6.0_10+"
	     The meaning of the	previous example is that the class or JAR file
	     requires either version 1.6.0_13, or a version with 1.6 as	a ver-
	     sion-id prefix and	that is	not less than 1.6.0_10.	The exact syn-
	     tax and definition	of version strings can be found	in Appendix A
	     of	the Java Network Launching Protocol _ API Specification
	     (JSR-56).
	     For JAR files, the	preference is to specify version requirements
	     in	the JAR	file manifest rather than on the command line.
	     See Notes for important policy information	on the use of this op-
	     tion.

   Non-Standard	Options
	  -X Displays information about	nonstandard options and	exits.

	  -Xint
	     Operates in interpreted-only mode.	Compilation to native code is
	     disabled, and all bytecode	is executed by the interpreter.	The
	     performance benefits offered by the Java HotSpot Client VM	adap-
	     tive compiler is not present in this mode.

	  -Xbatch
	     Disables background compilation. Typically, the Java VM compiles
	     the method	as a background	task, running the method in inter-
	     preter mode until the background compilation is finished. The
	     -Xbatch flag disables background compilation so that compilation
	     of	all methods proceeds as	a foreground task until	completed.

	  -Xbootclasspath:bootclasspath
	     Specifies a colon-separated list of directories, JAR files, and
	     ZIP archives to search for	boot class files. These	are used in
	     place of the boot class files included in the Java	platform JDK.
	     Applications that use this	option for the purpose of overriding a
	     class in rt.jar should not	be deployed because doing so would
	     contravene	the Java Runtime Environment binary code license.

	  -Xbootclasspath/a:path
	     Specifies a colon-separated path of directories, JAR files, and
	     ZIP archives to append to the default bootstrap class path.

	  -Xbootclasspath/p:path
	     Specifies a colon-separated path of directories, JAR files, and
	     ZIP archives to add in front of the default bootstrap class path.
	     Do	not deploy applications	that use this option to	override a
	     class in rt.jar because this violates the Java Runtime Environ-
	     ment binary code license.

	  -Xcheck:jni
	     Performs additional checks	for Java Native	Interface (JNI)	func-
	     tions. Specifically, the Java Virtual Machine validates the pa-
	     rameters passed to	the JNI	function and the runtime environment
	     data before processing the	JNI request. Any invalid data encoun-
	     tered indicates a problem in the native code, and the Java	Vir-
	     tual Machine will terminate with a	fatal error in such cases. Ex-
	     pect a performance	degradation when this option is	used.

	  -Xfuture
	     Performs strict class-file	format checks. For backward compati-
	     bility, the default format	checks performed by the	Java virtual
	     machine are no stricter than the checks performed by 1.1.x	ver-
	     sions of the JDK software.	The -Xfuture option turns on stricter
	     class-file	format checks that enforce closer conformance to the
	     class-file	format specification. Developers are encouraged	to use
	     this flag when developing new code	because	the stricter checks
	     will become the default in	future releases	of the Java applica-
	     tion launcher.

	  -Xnoclassgc
	     Disables class garbage collection.	Use of this option preven mem-
	     ory recovery from loaded classes thus increasing overall memory
	     usage. This could cause OutOfMemoryError to be thrown in some ap-
	     plications.

	  -Xincgc
	     Enables the incremental garbage collector.	The incremental
	     garbage collector,	which is turned	off by default,	will reduce
	     the occasional long garbage-collection pauses during program exe-
	     cution. The incremental garbage collector will at times execute
	     concurrently with the program and during such times will reduce
	     the processor capacity available to the program.

	  -Xloggc:file
	     Reports on	each garbage collection	event, as with -verbose:gc,
	     but logs this data	to a file. In addition to the information
	     -verbose:gc gives,	each reported event will be preceded by	the
	     time (in seconds) since the first garbage-collection event.
	     Always use	a local	file system for	storage	of this	file to	avoid
	     stalling the Java VM due to network latency. The file may be
	     truncated in the case of a	full file system and logging will con-
	     tinue on the truncated file. This option overrides	-verbose:gc
	     when both are specified on	the command line.

	  -Xmnsize or -XX:NewSize
	     Sets the size of the young	generation (nursery).

	  -Xmsn
	     Specifies the initial size, in bytes, of the memory allocation
	     pool. This	value must be a	multiple of 1024 greater than 1	MB.
	     Append the	letter k or K to indicate kilobytes, or	m or M to in-
	     dicate megabytes. The default value is chosen at runtime based on
	     system configuration. See Garbage Collector Ergonomics at
	     http://docs.oracle.com/javase/7/docs/technotes/guides/vm/gc-ergo-
	     nomics.html
	     Examples:
	     -Xms6291456
	     -Xms6144k
	     -Xms6m

	  -Xmxn
	     Specifies the maximum size, in bytes, of the memory allocation
	     pool. This	value must a multiple of 1024 greater than 2 MB. Ap-
	     pend the letter k or K to indicate	kilobytes, or m	or M to	indi-
	     cate megabytes. The default value is chosen at runtime based on
	     system configuration.
	     For server	deployments, -Xms and -Xmx are often set to the	same
	     value. See	Garbage	Collector Ergonomics at	http://docs.ora-
	     cle.com/javase/7/docs/technotes/guides/vm/gc-ergonomics.html
	     Examples:
	     -Xmx83886080
	     -Xmx81920k
	     -Xmx80m
	     On	Solaris	7 and Solaris 8	SPARC platforms, the upper limit for
	     this value	is approximately 4000 m	minus overhead amounts.	On So-
	     laris 2.6 and x86 platforms, the upper limit is approximately
	     2000 m minus overhead amounts. On Linux platforms,	the upper
	     limit is approximately 2000 m minus overhead amounts.

	  -Xprof
	     Profiles the running program, and sends profiling data to stan-
	     dard output. This option is provided as a utility that is useful
	     in	program	development and	is not intended	to be used in produc-
	     tion systems.

	  -Xrs
	     Reduces use of operating-system signals by	the Java VM.
	     In	an earlier release, the	Shutdown Hooks facility	was added to
	     enable orderly shutdown of	a Java application. The	intent was to
	     enable user cleanup code (such as closing database	connections)
	     to	run at shutdown, even if the Java VM terminates	abruptly.
	     The Java VM catches signals to implement shutdown hooks for unex-
	     pected Java VM termination. The Java VM uses SIGHUP, SIGINT, and
	     SIGTERM to	initiate the running of	shutdown hooks.
	     The JVM uses a similar mechanism to implement the feature of
	     dumping thread stacks for debugging purposes. The JVM uses
	     SIGQUIT to	perform	thread dumps.
	     Applications embedding the	Java VM	frequently need	to trap	sig-
	     nals such as SIGINT or SIGTERM, which can lead to interference
	     with the Java VM signal handlers. The -Xrs	command-line option is
	     available to address this issue. When -Xrs	is used	on the Java
	     VM, the signal masks for SIGINT, SIGTERM, SIGHUP, and SIGQUIT are
	     not changed by the	Java VM, and signal handlers for these signals
	     are not installed.
	     There are two consequences	of specifying -Xrs:

	     o SIGQUIT thread dumps are	not available.

	     o User code is responsible	for causing shutdown hooks to run, for
	       example by calling System.exit()	when the Java VM is to be ter-
	       minated.

	  -Xssn
	     Sets the thread stack size.

	  -XX:AllocationPrefetchStyle=n
	     Sets the style of prefetch	used during allocation.	default=2.

	  -XX:+AggressiveOpts
	     Enables aggressive	optimization.

	  -XX:+|-DisableAttachMechanism
	     Specifies whether commands	(such as jmap and jconsole) can	attach
	     to	the Java VM. By	default, this feature is disabled. That	is,
	     attaching is enabled, for example:
	     java -XX:+DisableAttachMechanism

	  -XXLargePageSizeInBytes=n
	     Specifies the maximum size	for large pages.

	  -XX:MaxGCPauseMillis=n
	     Sets a target for the maximum GC pause time.
	     This is a soft goal, and the Java VM will make its	best effort to
	     achieve it. There is no maximum value set by default.

	  -XX:NewSize
	     Sets the size of the young	generation (nursery). Sames as -Xmn-
	     size.

	  -XX:ParallelGCThreads=n
	     Sets the number of	GC threads in the parallel collectors.

	  -XX:PredictedClassLoadCount=n
	     This option requires that the UnlockExperimentalVMOptions flag be
	     set first.	Use the	PredictedClassLoadCount	flag if	your applica-
	     tion loads	a lot of classes and especially	if class.forName() is
	     used heavily. The recommended value is the	number of classes
	     loaded as shown in	the output from	-verbose:class.
	     Example:
	     java -XX:+UnlockExperimentalVMOptions -XX:PredictedClassLoadCount=60013

	  -XX:+PrintCompilation
	     Prints verbose output from	the Java HotSpot VM dynamic runtime
	     compiler.

	  -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
	     Prints garbage collection output along with time stamps.

	  -XX:SoftRefLRUPolicyMSPerMB=0
	     This flag enables aggressive processing of	software references.
	     Use this flag if the software reference count has an impact on
	     the Java HotSpot VM garbage collector.

	  -XX:TLABSize=n
	     Thread local allocation buffers (TLAB) are	enabled	by default in
	     the Java HotSpot VM. The Java HotSpot VM sizes TLABs based	on al-
	     location patterns.	The -XX:TLABSize option	enables	fine-tuning
	     the size of TLABs.

	  -XX:+UseAltSigs
	     The Java VM uses SIGUSR1 and SIGUSR2 by default, which can	some-
	     times conflict with applications that signal-chain	SIGUSR1	and
	     SIGUSR2. The -XX:+UseAltSigs option causes	the Java VM to use
	     signals other than	SIGUSR1	and SIGUSR2 as the default.

	  -XX:+|-UseCompressedOops
	     Enables compressed	references in 64-bit Java VMs.
	     This option is true by default.

	  -XX:+UseConcMarkSweepGC or -XX:+UseG1GC
	     Enables either the	Concurrent Mark	Sweep (CMS) or the G1 garbage
	     collectors.

	  -XX:+|-UseLargePages
	     Enables large page	support.
	     Large pages are enabled by	default	on Solaris.

	  -XX:+UseParallelOldGC
	     Enables the parallel garbage collectors, which are	optimized for
	     throughput	and average response time.

NOTES
       The -version:release option places no restrictions on the complexity of
       the release specification. However, only	a restricted subset of the
       possible	release	specifications represent sound policy and only these
       are fully supported. These policies are:

	  1. Any version, represented by not using this	option.

	  2. Any version greater than an arbitrarily precise version-id	value,
	     for example:
	     "1.6.0_10+"
	     This would	utilize	any version greater than 1.6.0_10. This	is
	     useful for	a case where an	interface was introduced (or a bug
	     fixed) in the release specified.

	  3. A version greater than an arbitrarily precise version-id, bounded
	     by	the upper bound	of that	release	family,	for example:
	     "1.6.0_10+&1.6*"

	  4. An	or expressions of items	2 or 3,	for example:
	     "1.6.0_10+&1.6* 1.7+"
	     Similar to	item 2.	This is	useful when a change was introduced in
	     a release (1.7) but also made available in	updates	to earlier re-
	     leases.

Performance Tuning Examples
       The following examples show how to use experimental tuning flags	to op-
       timize either throughput	or faster response time.

   Example 1, Tuning for Higher	Throughput
	       java -d64 -server -XX:+AggressiveOpts -XX:+UseLargePages	-Xmn10g	 -Xms26g -Xmx26g

   Example 2, Tuning for Lower Response	Time
	       java -d64 -XX:+UseG1GC -Xms26g Xmx26g -XX:MaxGCPauseMillis=500 -XX:+PrintGCTimeStamps

EXIT STATUS
       The following exit values are typically returned	by the launcher, typi-
       cally when the launcher is called with the wrong	arguments, serious er-
       rors, or	exceptions thrown from the Java	Virtual	Machine. However, a
       Java application	may choose to return any value using the API call Sys-
       tem.exit(exitValue).

	  o 0: Successful completion

	  o >0:	An error occurred

SEE ALSO
	  o javac(1)

	  o jdb(1)

	  o javah(1)

	  o jar(1)

				  18 Jul 2013			       java(1)

Name | SYNOPSIS | DESCRIPTION | OPTIONS | NOTES | Performance Tuning Examples | EXIT STATUS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=java&sektion=1&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help