Java有没有这样的命令行参数工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java有没有这样的命令行参数工具相关的知识,希望对你有一定的参考价值。

参考技术A Java 命令行工具总结
1、命令
C/Documents and Settings/Zianed>ls ‘%JAVA_HOME%’/bin
htmlConverter.exe javap.exe jstatd.exe rmid.exe
appletviewer.exe javaw.exe jvisualvm.exe rmiregistry.exe
apt.exe javaws.exe keytool.exe schemagen.exe
beanreg.dll jconsole.exe kinit.exe serialver.exe
extcheck.exe jdb.exe klist.exe servertool.exe
idlj.exe jhat.exe ktab.exe tnameserv.exe
jar.exe jinfo.exe msvcr71.dll unpack200.exe
jarsigner.exe jli.dll native2ascii.exe wsgen.exe
java-rmi.exe jmap.exe orbd.exe wsimport.exe
java.exe jps.exe pack200.exe xjc.exe
javac.exe jrunscript.exe packager.exe
javadoc.exe jstack.exe policytool.exe
javah.exe jstat.exe rmic.exe
需要获得其中的帮助使用XX -help即可
Basic Tools
These tools are the foundation of the JDK. They are the tools you use to create and build applications.
Tool Name Brief Description Links to Reference Pages
javac The compiler for the Java programming language. [Solaris and Linux ] [Windows ]
java The launcher for Java applications. In this release, a single launcher is used both for development and deployment.
The old deployment launcher, jre , is no longer provided. [Solaris and Linux ] [Windows ]
javadoc API documentation generator.
See Javadoc Tool page for doclet and taglet APIs. [Solaris and Linux ] [Windows ]
apt Annotation processing tool.
See Annotation Processing Tool for program annotation processing. [Solaris, Linux, and Windows ]
appletviewer Run and debug applets without a web browser. [Solaris and Linux ] [Windows ]
jar Create and manage Java Archive (JAR) files.
See Java Archive Files page for the JAR specification. [Solaris and Linux ] [Windows ]
jdb The Java Debugger.
See JPDA for the debugger architecture specifications. [Solaris and Linux ] [Windows ]
javah C header and stub generator. Used to write native methods. [Solaris and Linux ] [Windows ]
javap Class file disassembler [Solaris and Linux ] [Windows ]
extcheck Utility to detect Jar conflicts. [Solaris and Linux ] [Windows ]
--------------------------------------------------------------------------------
Monitoring and Management Tools
You can use the following tools to monitor JVM performance and resource consumption. The tools described in this section are unsupported and experimental , and should be used with that in mind. They may not be available in future JDK versions.

Platform support:

•jconsole: all platforms.
•jps, jstat, and jstatd: all platforms except Windows 98 and Windows ME.
For more information, see Monitoring and Management for the Java Platform .

Tool Name Brief Description
jconsole Experimental : Java Monitoring and Management Console – JMX-compliant graphical tool for monitoring a Java virtual machine. It can monitor both local and remote JVMs.
jps Experimental : JVM Process Status Tool – Lists instrumented HotSpot Java virtual machines on a target system.
jstat Experimental : JVM Statistics Monitoring Tool – Attaches to an instrumented HotSpot Java virtual machine and collects and logs performance statistics as specified by the command line options.
jstatd Experimental : JVM jstat Daemon – Launches an RMI server application that monitors for the creation and termination of instrumented HotSpot Java virtual machines and provides a interface to allow remote monitoring tools to attach to Java virtual machines running on the local system.

--------------------------------------------------------------------------------

Troubleshooting Tools
The following tools can be used for specific troubleshooting tasks. The tools described in this section are unsupported and experimental in nature and should be used with that in mind. They may not be available in future JDK versions.

These tools are not currently available on Windows platforms .

Tool Name Brief Description
jinfo Experimental – Configuration Info for Java – Prints configuration information for for a given process or core file or a remote debug server.
jmap Experimental – Memory Map for Java – Prints shared object memory maps or heap memory details of a given process or core file or a remote debug server.
jsadebugd Experimental – Serviceability Agent Debug Daemon for Java – Attaches to a process or core file and acts as a debug server.
jstack Experimental – Stack Trace for Java – Prints a stack trace of threads for a given process or core file or remote debug server.

2 、命令简单介绍

2.1 HtmlConverter

2.2 appletviewer

查看Applet程序的运行结果。

2.3 apt

2.4 extcheck

2.5 idlj

2.6 jar

将一个文件打成jar包,以提供给给程序,方便使用。

bash-3.2$ jar -help

非法选项:h

用法: jar ctxui[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files …

选项包括:

-c 创建新的归档文件

-t 列出归档目录

-x 解压缩已归档的指定(或所有)文件

-u 更新现有的归档文件

-v 在标准输出中生成详细输出

-f 指定归档文件名

-m 包含指定清单文件中的清单信息

-e 为捆绑到可执行 jar 文件的独立应用程序

指定应用程序入口点

-0 仅存储;不使用任何 ZIP 压缩

-M 不创建条目的清单文件

-i 为指定的 jar 文件生成索引信息

-C 更改为指定的目录并包含其中的文件

如果有任何目录文件,则对其进行递归处理。

清单文件名、归档文件名和入口点名的指定顺序

与 “m”、”f” 和 “e” 标志的指定顺序相同。

示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:

jar cvf classes.jar Foo.class Bar.class

示例 2:使用现有的清单文件 “mymanifest” 并

将 foo/ 目录中的所有文件归档到 “classes.jar” 中:

jar cvfm classes.jar mymanifest -C foo/ .

bash-3.2$ jar -cvf zianed.jar *.class

标明清单(manifest)

增加:A.class(读入= 112) (写出= 105)(压缩了 6%)

增加:B.class(读入= 246) (写出= 184)(压缩了 25%)

bash-3.2$

2.7 jarsigner

2.8 java-rmi

2.9 java

执行java语言,期中包括了一部分的java执行可以使用和引入的参数;也包括了部分执行时的信息收集信息。

bash-3.2$ java -version

java version “1.6.0_10″

Java(TM) SE Runtime Environment (build 1.6.0_10-b33)

Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode)

2.10 javac

java编译器,将java源文件编译成可以供jvm执行的二进制class文件。

bash-3.2$ javac -version

javac 1.6.0_10

2.11 javadoc

根据源文件生成java的doc文档API。

2.12 javah

bash-3.2$ cd zianed

bash-3.2$ ls B.*

B.class B.java

bash-3.2$ cd ..

bash-3.2$ javah zianed.B

bash-3.2$ ls

zianed zianed_B.h

bash-3.2$

2.13 javap

将java字节码文件进行反编译的工具。

bash-3.2$ javap zianed.B

Compiled from “B.java”

public class zianed.B extends java.lang.Object implements zianed.A

public zianed.B();

public void print();

public native java.lang.String getInfo();



bash-3.2$

2.14 javaw

The javaw command is identical to java , except that with javaw there is no associated console window. Use javaw when you don’t want a command prompt window to appear. The javaw launcher will, however, display a dialog box with error information if a launch fails for some reason.

2.15 javaws:

2.16 jconsole

Java Monitoring and Management Console

启动java进程监控和管理控制台。监控和分析jvm的运行情况。

用法: jconsole [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ...]

-interval 将更新间隔时间设置为 n 秒(默认值为 4 秒)

-notile 最初不平铺显示窗口(对于两个或更多连接)

-pluginpath 指定 jconsole 用于查找插件的路径

-version 输出程序版本

connection = pid || host:port || JMX URL (service:jmx:<protocol>://…)

pid 目标进程的进程 ID

host 远程主机名或 IP 地址

port 用于远程连接的端口号

-J 对正在运行 jconsole 的 Java 虚拟机指定输入参数

Options are mutually exclusive. Option, if used, should follow immediately after the command name.

jstack prints Java stack traces of Java threads for a given Java process or core file or a remote debug server.

bash-3.2$ jstack -help

The jstatd tool is an RMI server application that monitors for the creation and termination of instrumented HotSpot Java virtual machines (JVMs) and provides a interface to allow remote monitoring tools to attach to JVMs running on the local host.

bash-3.2$ jstatd –help

Virtual Machine jstat Daemon

usage: jstatd [-nr] [-p port] [-n rminame]

2.26 jvisualvm

启动VisualVM查看VM状态。

bash-3.2$ jvisualvm &

[1] 3660

bash-3.2$

2.27 keytool

2.28 kinit

2.29 klist

2.30 ktab

2.31 native2ascii

对文件转换编码。

用法:native2ascii [-reverse] [-encoding 编码] [输入文件 [输出文件]]

2.32 orbd

2.33 pack200

2.34 packager

2.35 polocytool

2.36 rmic

2.37 rmid

2.38 rmiregisty

2.39 schemagen

2.40 serialver

2.41 servertool

2.42 tnameserv

2.43 unpack200

2.44 wsgen

2.45 wsimport

2.46 xjc
3、jvm的部分参数
也就是在启动Java虚拟机、或者执行JAVA时应该添加的程序。
Windows平台下在以下路径下存在参数说明。
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheckjni perform additional checks for JNI functions
-Xshareoff do not attempt to use shared class data
-Xshareauto use shared class data if possible (default)
-Xshareon require using shared class data, otherwise fail.
The -X options are non-standard and subject to change without notice.
5 、最常用的工具
javac Java源代码编译工具
参考技术B 参考一下:
当你使用命令行的形式运行.class文件时,向你的类传递参数.

C:\>java YourClassName 参数1 [参数2 参数3 ....]

参数之间用一个空格作为间隔符.

String[] args 这个字符串数组是保存运行main函数时输入的参数的,例如main函数所在的类名为test 那么你在cmd运行 java test a b c 时,args[0] = a ,args[1]=b, args[2]=c 你就可以在你的程序中调用你输入的这些变量了。

args[]不就是那个字符串This is a simple Java program吗?
-------完全不是的,你理解不对。这样好了,你在运行的时候加个参数,比如 java test XX。然后在你的main函数里面加这段话:System.out.println("arg is"+args[0]),然后看看输出是什么?
是不是这个:
This is a simple Java program
arg is XX

在运行时输入java test xx yy zz,并且在你的main函数里面加这段话:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然后看看输出是什么?
是不是:
This is a simple Java program
arg is xx yy zz

现在你理解了吗。。。

如果没关系,为什么程序中去掉String args[]会出现错误?
--------之所以去掉会出错在于,不带String args[]的main函数和带String args[]的main函数,本质上已经不是同一个函数了,java 本身不存在不带String args[]的main函数,所以当然出错了。
另外,虚机团上产品团购,超级便宜

正确使用 Java -D 命令行参数

【中文标题】正确使用 Java -D 命令行参数【英文标题】:Proper usage of Java -D command-line parameters 【发布时间】:2011-06-30 01:23:29 【问题描述】:

在 Java 中传递 -D 参数时,编写命令行然后从代码中访问它的正确方法是什么?

例如,我尝试过写这样的东西......

if (System.getProperty("test").equalsIgnoreCase("true"))

   //Do something

然后这样称呼它......

java -jar myApplication.jar -Dtest="true"

但我收到 NullPointerException。我做错了什么?

【问题讨论】:

考虑使用compareToIgnoreCase 而不是equalsIgnoreCase 用于与语言环境无关的标识符;否则你可能会遇到土耳其四是问题等等。 我可以建议使用 Boolean.getBoolean 而不是您拥有的长 if 语句吗? shankh.com/2009/07/07/some-fun-with-boolean-getboolean -D 代表什么? 【参考方案1】:

我怀疑问题在于您将“-D”放在-jar 之后。试试这个:

java -Dtest="true" -jar myApplication.jar

从命令行帮助:

java [-options] -jar jarfile [args...]

换句话说,您目前的方式会将-Dtest="true" 视为传递给main 的参数之一,而不是作为JVM 参数。

(你也许应该去掉引号,但无论如何它可能工作得很好——它可能取决于你的shell。)

【讨论】:

现在完美运行。另外值得注意的是,为了在 Eclipse 调试器中复制这种行为,这些类型的参数必须放在运行配置下的 VM 参数部分中。 至少从 bash 它可以与那里的引号一起使用(并且也允许这种方式的空格),我整天都使用它来进行蚂蚁呼叫。 觉得我花了多少时间在那个上有点愚蠢!感谢您指出了这一点。 :) 如果有人想知道,如果你想传递多个属性,只需在“空格”后多次使用 -D java -D= -D= -D=...【参考方案2】:

应该是:

java -Dtest="true" -jar myApplication.jar

那么下面会返回值:

System.getProperty("test");

不过,该值可能是null,因此请使用Boolean 防止出现异常:

boolean b = Boolean.parseBoolean( System.getProperty( "test" ) );

请注意,getBoolean 方法委托系统属性值,将代码简化为:

if( Boolean.getBoolean( "test" ) ) 
   // ...

【讨论】:

最后一点也适用于:Integer.getInteger("test"); Long.getLong("test") 假设您有 -Dtest=123【参考方案3】:

您将参数提供给程序而不是 Java。使用

java -Dtest="true" -jar myApplication.jar 

改为。

考虑使用

"true".equalsIgnoreCase(System.getProperty("test"))

避免 NPE。但不要总是不假思索地使用“尤达条件”,有时抛出 NPE 是正确的行为,有时类似于

System.getProperty("test") == null || System.getProperty("test").equalsIgnoreCase("true")

是正确的(提供默认值 true)。更短的可能性是

!"false".equalsIgnoreCase(System.getProperty("test"))

但不使用双重否定并不会减少误解。

【讨论】:

其实System.getProperty("test", "true").equalsIgnoreCase("true")写最后一个条件会更好。 Boolean.getBoolean("test"); 是另一种选择。 See. @Paulo 您的解决方案仅适用于属性(我想展示一个通用的),但比我的要好。 有趣:在这个答案中,JVM 参数来自 after -jar 标志,而在另一个答案中,它出现在“java”之后但 before -jar 标志。我认为他们的关键只是 JVM 参数位于 JAR 文件本身之前,在本例中为“myApplication.jar”? 为以如此明显的方式证明双重否定的观点而竖起大拇指。

以上是关于Java有没有这样的命令行参数工具的主要内容,如果未能解决你的问题,请参考以下文章

Java实验课:命令行参数是什么?

vs2010 怎么给c++项目预设命令行参数

正确使用 Java -D 命令行参数

SpringBoot修改JVM参数(内置Tomcat命令行启动和IDEA工具配置修改)

Python 中命令行参数解析工具 docopt 安装和应用

java命令行参数详解