📄 java - java 应用程序启动器.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0082)http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html -->
<HTML><HEAD><TITLE>java - Java 应用程序启动器</TITLE>
<META http-equiv=Content-Type content="text/html; CHARSET=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY bgColor=white>
<H1>java - Java 应用程序启动器</H1>
<UL>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#synopsis">结构</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#description">说明</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#oldjava">Java
和 OldJava</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#jit">JIT</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#options">选项</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#seealso">另请参阅</A>
</LI></UL><A name=synopsis>
<H2>结构</H2></A><PRE> <B>java</B> [ <A href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/threads.html">threads flag</A> ] [ options ] class [ argument ... ]
<B>java</B> [ <A href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/threads.html">threads flag</A> ] [ options ] <B>-jar</B> file.jar [ argument ... ]
<B>oldjava</B> [ <A href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/threads.html">threads flag</A> ] [ options ] class [ argument ... ]
</PRE>
<BLOCKQUOTE>
<DL>
<DT><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#options"><CODE>options</CODE></A>
<DD>命令行选项。
<DT><CODE>class</CODE>
<DD>要调用的类名。
<DT><CODE>file.jar</CODE>
<DD>要调用的 jar 文件名。只与 <A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/java.html#-jar"><CODE>-jar</CODE></A>
一起使用。
<DT><CODE>argument</CODE>
<DD>传给 <B>main</B> 函数的参数。 </DD></DL></BLOCKQUOTE><A name=description>
<H2>说明</H2></A>
<BLOCKQUOTE><B>
<P>java</B> 工具启动 Java 应用程序。它通过启动 Java 运行时环境,装载指定的类并调用该类的 <B>main</B>
方法,从而实现此功能。<B>main</B> 方法必须有以下的用法说明:</P><PRE> public static void main(String[])
</PRE>
<P>缺省情况下,第一个非选项参数是要调用的类名。应当使用全限定类名。如果指定了 <B>-jar</B> 选项,那么第一个非选项参数是 <B>JAR</B>
归档文件的名称,该归档文件包含应用程序的类和资源文件以及 <B>Main-Class</B> 清单头所指的启动类。</P>
<P>Java 运行时在下面三个位置集中查找启动类和使用到的其它类:自举类路径、安装方式扩展和用户类路径。</P>
<P>类名或 JAR 文件名后的非选项参数被传递给 <B>main</B> 函数。</P></BLOCKQUOTE><A name=oldjava>
<H2>JAVA 和 OLDJAVA</H2></A>
<BLOCKQUOTE>
<P>在 Solaris 系统中, <B>java</B> 启动器工具有两种形式:<B>一种是 java</B>,它实现所有的 1.2 功能;另一种是
<B>oldjava</B>,它是一种功能有限的启动工具,它支持一些与 1.2 功能不兼容的编程技巧。下面是 <B>java</B> 和
<B>oldjava</B> 之间的区别:
<UL>
<LI><B>oldjava</B> 启动器不支持扩展机制,当然,它可以将扩展包用作类和资源归档文件。
<LI><B>oldjava</B> 启动器对所有类都使用自举类加载器,而 <B>java</B> 启动器只对自举类使用自举类加载器。
<LI>在 <B>java</B> 中, <B>-classpath</B> 和 <B>-cp</B>
选项用于指定用户类的搜索路径,它们不能用来指定自举类的位置。而在 <B>oldjava</B> 中, <B>-classpath</B> 和
<B>-cp</B> 选项指定包括自举类在内的<I>所有</I>类的位置。
<P>注意: <B>java</B> 和 <B>oldjava</B> 在 <B>CLASSPATH</B>
环境变量的使用上<I>无</I>不同之处。除非 <B>CLASSPATH</B> 被 <B>-classpath</B> 或 <B>-cp</B>
覆盖了,否则它总是指定用户类的位置,但不提供自举类的任何信息。</P>
<LI><B>oldjava</B> 启动器支持所有的 1.2 安全功能。但使用 <B>oldjava</B> 时,从类路径加载的类没有保护域,因而在
<B>java</B> 启动器中只有自举类才拥有的所有权限它都拥有。 </LI></UL>
<P>以下命令使用 <B>oldjava</B> : </P>
<BLOCKQUOTE><PRE>oldjava -classpath <path> ...
</PRE></BLOCKQUOTE>
<P>它等同于下述使用 <B>java</B> 的命令: </P>
<BLOCKQUOTE><PRE>java -Xbootclasspath:<path> -Djava.ext.dirs= ...
</PRE></BLOCKQUOTE>
<P>上述两种情形中,<TT><path></TT> 都包含文件 <TT>rt.jar</TT>(有关 <TT>rt.jar</TT>
的描述及其在 JDK 软件中的位置的说明,请参阅 <A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/jdkfiles.html">JDK
文件结构</A>文档)。 </P></BLOCKQUOTE>
<P><A name=jit></A></P>
<H2>JIT</H2>
<BLOCKQUOTE>
<P>启动器的缺省行为是用“即时”编译器(或 JIT)执行字节码。缺省编译器位于 <TT>jre/lib/sparc/libsunwjit.so</TT>
中。当加载类时,JIT 将类字节码转换成本地机器代码。使用 JIT
会导致在每个类加载后有短暂延迟,但可提高程序的总体性能。在某些情况下,执行时间可缩短十分之一。</P>
<P>如果禁用了 JIT ,解释器将直接执行字节码。有两种办法可将 JIT 禁用:
<UL>
<LI>用以下的<B> setenv </B>命令将环境变量 <B>JAVA_COMPILER</B> 设为 <B>NONE</B>:
<BLOCKQUOTE><PRE>% setenv JAVA_COMPILER NONE
</PRE></BLOCKQUOTE>
<LI>用 <B>-D</B> 命令行选项将 <B>java.compiler</B> 设为 <B>NONE</B>:
<BLOCKQUOTE><PRE>% java -Djava.compiler=NONE myapp
</PRE></BLOCKQUOTE>
<P>使用命令行选项将覆盖 <B>JAVA_COMPILER</B> 环境变量的设置。</P></LI></UL>
<P>也可用 <B>JAVA_COMPILER</B> 或 <B>java.compiler</B> 来指定要使用另一个 JIT : </P>
<BLOCKQUOTE><PRE>% setenv JAVA_COMPILER foo
</PRE></BLOCKQUOTE>
<P>或 </P>
<BLOCKQUOTE><PRE>% java -Djava.compiler=foo myapp
</PRE></BLOCKQUOTE>
<P>将字母 <TT>lib</TT> 加到 "foo" 前面,并加上 <TT>.so</TT> 扩展名,因此,在该例中,虚拟机将查找名为
<TT>libfoo.so</TT> 的 JIT 编译器。查找所选编译器是在 <TT>jre/lib/sparc</TT> 目录以及由
<B>LD_LIBRARY_PATH</B>
环境变量所指定的搜索路径中进行的。若找不到这样的编译器,虚拟机将默认为使用解释器。</P></BLOCKQUOTE><A name=options>
<H2>选项</H2></A>
<BLOCKQUOTE>
<P>启动器有一组标准选项,当前的运行时环境支持这些选项并且将来的版本也将支持它们。有一批附加的非标准选项是专门用于当前的虚拟机实现的,在将来的版本中它会改变。非标准选项以
<B>-X</B> 打头。</P></BLOCKQUOTE><A name=standard>
<H2>标准选项</H2></A>
<BLOCKQUOTE>
<DL>
<DT><B>-classpath</B> <I>类路径</I>
<DT><B>-cp</B> <I>类路径</I>
<DD>指定一个用于查找类文件的列表,它由目录、 JAR 归档文件和 ZIP 归档文件组成。类路径项用冒号 (<B>:</B>) 来分隔。指定
<B>-classpath</B> 或 <B>-cp</B> 将覆盖 <B>CLASSPATH</B> 环境变量的所有设置。
<P><B>-classpath</B> 或 <B>-cp</B> 与 <B>java</B> 或 <B>javaw</B>
一起使用时将同时指定用户类和自举类的路径。<B>-classpath</B> 或 <B>-cp</B> 与 <B>oldjava </B>或
<B>oldjavaw </B>一起使用时仅用于指定用户类的类路径。</P>
<P>如果不使用 <B>-classpath</B> 和 <B>-cp</B> ,且没有设定 <B>CLASSPATH</B> ,则用户类路径由当前目录
(<B><CODE>.</CODE></B>) 构成。</P>
<P>有关类路径的详细信息,请参阅<A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/classpath.html">设置类路径</A>。</P>
<DT><B>-D</B><I>属性</I><B>=</B><I>值</I>
<DD>设置系统属性的值。
<P><A name=-jar></A></P>
<DT><B>-jar</B>
<DD>执行封装在 JAR 归档文件中的程序。第一个参数是 JAR 归档文件的名称而不是启动类名。启动类由 <B>Main-Class</B>
清单头指定。JAR 文件是所有用户类的源,其它的用户类路径设置将被忽略。
<P><B>oldjava</B> 和 <B>oldjavaw</B> 工具不支持 <B>-jar</B> 选项。</P>
<DT><B>-verbose</B>
<DT><B>-verbose:class</B>
<DD>显示每个所加载的类的信息。
<DT><B>-verbose:gc</B>
<DD>报告每个垃圾收集事件。
<DT><B>-verbose:jni</B>
<DD>报告有关本地方法的使用和其它 Java 平台相关代码接口活动的信息。
<DT><B>-version</B>
<DD>显示版本信息并退出。
<DT><B>-?</B>
<DT><B>-help</B>
<DD>显示用法信息并退出。
<DT><B>-X</B>
<DD>显示与非标准选项有关的信息并退出。 </DD></DL></BLOCKQUOTE><A name=nonstandard>
<H3>非标准选项</H3></A>
<BLOCKQUOTE>
<DL>
<DT><B>-Xbootclasspath:</B><I>自举类路径</I>
<DD>指定以冒号分隔的目录、 JAR 归档文件和 ZIP 归档文件列表,用以查找自举类文件。这些自举类文件用来取代 JDK 1.2
软件中所包括的自举类文件。
<DT><B>-Xdebug</B>
<DD>启动时激活调试器。Java 解释器将输出一密码供 jdb 使用。有关详细资料及程序例子,请参阅 <A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/jdb.html#description">jdb
说明</A>。
<DT><B>-Xnoclassgc</B>
<DD>禁用类垃圾收集
<DT><B>-Xms</B><I>n</I>
<DD>指定内存分配池的初始容量。该值必须大于 1000。要使该值扩大 1000 倍,须附加上字母 <B>k</B>,要使该值扩大一百万倍,须附加上字母
<B>m</B>。缺省值为 <B>1m</B>。
<DT><B>-Xmx</B><I>n</I>
<DD>指定内存分配池的最大容量。该值必须大于 1000。要将它扩大 1000 倍,须附加上字母 <B>k</B>,要将该值扩大一百万倍,须附加上字母
<B>m</B>。缺省值为 <B>16m</B>。
<DT><B>-Xrunhprof</B>[:<I>help</I>][:<I><子选项>=<值>,...</I>]
<DD>启用 cpu 、堆或监视器监控操作。该选项后面一般跟着一个列表,该列表由以逗号分隔的 "<子选项>=<值>"
对所组成。运行命令 <B>java -Xrunhprof:help</B> 可获得子选项及其缺省值的列表。
<DT><B>-Xrs</B>
<DD>减少操作系统信号的使用。
<DT><B>-Xcheck:jni</B>
<DD>对 Java 平台相关代码接口函数进行额外检查。 </DD></DL></BLOCKQUOTE><A name=seealso>
<H2>另请参阅</H2></A>
<BLOCKQUOTE>
<UL>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/javac.html">javac
- Java 编程语言编译器</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/jdb.html">jdb
- Java 应用程序调试程序</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/javah.html">javac
- C 头文件与 stub 文件生成器</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/tooldocs/solaris/jar.html">jar
- JAR 归档工具</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/guide/extensions/index.html">Java
扩展框架</A>
<LI><A
href="http://www.iplab.is.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/guide/security/index.html">安全特性</A>。
</LI></UL></BLOCKQUOTE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -