JAVAC 命令详解
- 格式:doc
- 大小:55.00 KB
- 文档页数:9
javac编译命令javac是Java编译器的命令行工具,用于将Java源代码文件编译成字节码文件。
本文将详细介绍javac编译命令的用法和参数,并提供一些实际示例。
我们需要安装Java开发工具包(JDK),它包含了javac命令和其他Java开发所需的工具和库。
安装完成后,我们就可以使用javac 命令来编译Java源代码了。
javac命令的基本用法如下:```javac [options] [source files]```其中,options是可选的编译选项,source files是需要编译的Java源代码文件。
下面是一些常用的javac编译选项:- `-d directory`:指定编译后的字节码文件存放的目录。
如果不指定该选项,默认会将字节码文件放在源代码所在的目录下。
- `-classpath path`:指定编译时所需的类路径,用于查找依赖的类和库文件。
path可以是一个目录,或者是多个目录和JAR文件的路径,用冒号(Windows系统使用分号)分隔。
- `-sourcepath path`:指定查找源代码文件的路径。
path可以是一个目录,或者是多个目录的路径,用冒号(Windows系统使用分号)分隔。
- `-encoding encoding`:指定源代码的字符编码。
如果不指定该选项,默认会使用平台的默认编码。
- `-g`:生成调试信息,包括局部变量表和源代码行号。
这对于调试和分析程序非常有用。
- `-nowarn`:关闭警告信息的输出。
如果不指定该选项,默认会输出警告信息。
除了上述选项,javac还支持其他一些高级选项,如限制编译器的警告级别、启用或禁用特定的编译特性等。
详细信息可以通过运行`javac -help`命令查看。
下面是一些实际的示例,演示了javac命令的使用:1. 编译单个Java源代码文件,并将字节码文件放在指定目录下:```javac -d bin HelloWorld.java```上述命令将HelloWorld.java编译成字节码文件,并将字节码文件存放在bin目录下。
jdk的常用命令JDK是Java开发工具包的缩写,是Java开发人员必备的工具。
在JDK中,有许多常用的命令可以帮助开发人员进行Java程序的编译、运行和调试等操作。
本文将介绍一些常用的JDK命令,并对其功能和使用方法进行详细解释。
一、javac命令javac命令是JDK中用于编译Java源文件的命令。
它将Java源文件编译为字节码文件,以便能够在Java虚拟机中执行。
使用javac 命令可以指定编译输出的目录、编译选项和要编译的源文件等参数。
二、java命令java命令是JDK中用于运行Java程序的命令。
它可以执行已经编译好的字节码文件,并将程序输出结果显示在控制台上。
使用java 命令时,需要指定要运行的主类名和程序的参数等信息。
三、javadoc命令javadoc命令是JDK中用于生成Java API文档的命令。
它可以根据源代码中的特定注释标记,自动生成程序的文档说明。
使用javadoc命令可以指定要生成文档的源代码目录、文档输出目录和其他一些选项。
四、javap命令javap命令是JDK中用于反编译字节码文件的命令。
它可以将字节码文件转换为人可读的Java源代码文件,以便开发人员查看和分析程序的实现细节。
使用javap命令时,需要指定要反编译的字节码文件和一些选项。
五、jdb命令jdb命令是JDK中用于调试Java程序的命令。
它提供了一些调试工具和命令,可以帮助开发人员在程序运行过程中进行断点设置、变量查看、单步执行等操作。
使用jdb命令时,需要指定要调试的Java程序和一些调试选项。
六、jar命令jar命令是JDK中用于打包Java程序的命令。
它可以将多个Java 类文件和资源文件打包成一个可执行的JAR文件,方便程序的发布和部署。
使用jar命令时,可以指定要打包的文件和一些打包选项。
七、jps命令jps命令是JDK中用于查看Java进程的命令。
它可以列出当前系统中所有正在运行的Java进程的进程ID和进程名称等信息。
javac命令详解
javac命令是Java编译器命令,用于将Java源代码文件(.java)编译成Java字节码文件(.class)。
以下是javac命令的详细说明: 1. 基本语法
javac [options] [source files]
其中,options是编译选项,source files是待编译的源文件,可以是单独的.java文件,也可以是多个文件或者一个目录。
2. 常用选项
- -d:指定编译后的.class文件输出目录
- -classpath或-cp:指定编译时使用的类路径
- -sourcepath:指定源代码文件的路径
- -encoding:指定源代码文件的编码方式
- -verbose:显示编译过程中的详细信息
- -version:显示编译器的版本信息
- -help或-?:显示帮助信息
3. 示例
假设有一个Java源码文件HelloWorld.java,位于D:test目录下,编译后的.class文件需要输出到D:testbin目录下,类路径中需要包含D:lib目录下的jar包,则可以使用以下命令进行编译:
javac -d D:testbin -classpath D:lib*.jar
D:testHelloWorld.java
4. 注意事项
- javac命令需要安装JDK才能使用,而不是仅安装JRE。
- 编译时需要指定源文件的编码方式,否则可能出现中文乱码等问题。
- 编译时需要保证类路径正确,否则可能找不到相应的类而出现编译错误。
- 编译后的.class文件可以直接在Java虚拟机中运行。
`javac` 是 Java 编译器,用于将 Java 源代码文件(.java 文件)编译成字节码文件(.class 文件)。
以下是 `javac` 命令的一些常用参数及其详解:1. **-classpath** 或 **-cp*** 指定类路径,即Java 类库的路径。
例如:`-classpath .;C:\lib\*.jar`2. **-d*** 指定生成的 `.class` 文件的目标目录。
例如:`-d bin`3. **-encoding*** 指定源文件的字符编码。
例如:`-encoding UTF-8`4. **-g*** 生成带有调试信息的类文件。
5. **-g:none*** 不生成调试信息。
6. **-g:source,lines,vars*** 只生成行和变量调试信息。
7. **-J*** 直接传递给 Java 运行时环境的选项。
例如:`-J-Xmx512m` 分配最大内存为 512MB。
8. **-nowarn*** 不显示警告信息。
9. **-O** 或 **-optimize*** 启用优化。
10. **-proc:none** 或 **-proc:only** 或 **-proc:new*** 与 Java 平台无关的注解处理。
11. **-sourcepath** 或 **-s*** 指定源文件路径。
例如:`-sourcepath src` 12. **-target** 或 **-target version*** 指定目标虚拟机版本。
例如:`-target 1.8` 13. **-verbose*** 显示编译过程的详细信息。
14. **-version** 或 **-v*** 显示版本信息。
15. **-Werror*** 将警告视为错误。
16. **-Xlint:unchecked** 或 **-Xlint:unchecked** (注意重复) * 启用未检查警告。
java、javac命令用法在Java编程语言中,java命令用于运行Java程序,而javac命令用于编译Java源代码文件。
1. java命令用法:-先使用javac命令将Java源代码文件编译成字节码文件(.class文件)。
-然后使用java命令运行编译后的字节码文件。
-命令格式:java [选项] [主类名] [参数]-选项和参数是可选的,主要用于指定虚拟机参数和传递给Java 程序的参数。
-主类名指定要运行的Java程序的入口类名。
如果程序中不存在main方法,则无法执行。
例如,要运行名为"HelloWorld"的Java程序:```javac HelloWorld.java //编译Java源代码文件java HelloWorld //运行编译后的字节码文件```注意:java命令默认在同一目录中查找字节码文件,如果字节码文件位于其他目录中,需要指定文件的路径。
2. javac命令用法:- javac命令用于将Java源代码文件编译成字节码文件。
-命令格式:javac [选项] [源文件]-选项主要用于指定编译参数,例如输出目录、类路径等。
-源文件是需要编译的Java源代码文件名。
例如,要编译名为"HelloWorld.java"的Java源代码文件:```javac HelloWorld.java //编译Java源代码文件```编译成功后会生成对应的字节码文件"HelloWorld.class"。
拓展:- java命令还可以通过-classpath/-cp选项指定类路径,以便在运行Java程序时指定需要引用的类文件的路径。
- javac命令可以用于编译多个Java源文件,可以一次性编译整个项目,也可以使用通配符模式编译指定目录下的所有源文件。
-除了java和javac命令,还有其他一些相关的Java命令,例如javadoc用于生成API文档、jar用于创建JAR文件等。
java 命令参数一、概述在Java编程中,命令参数是一种通过命令行传递给Java虚拟机(JVM)的参数。
这些参数可用于控制Java程序的行为,包括程序的启动参数、内存管理、调试和性能分析等。
Java命令参数在开发和部署Java应用时非常重要,正确的使用和配置能够有效提高程序的性能和可维护性。
二、常用Java命令参数以下是一些常用的Java命令参数:1. 启动参数•-classpath:指定程序的类路径,用于加载程序所需的类文件。
•-Dproperty=value:设置系统属性,可以在程序中通过System.getProperty(String key)获取。
•-Xmx<size>:指定JVM堆内存的最大值。
•-Xms<size>:指定JVM堆内存的初始大小。
2. 垃圾回收参数•-XX:+UseSerialGC:使用串行垃圾回收器。
•-XX:+UseParallelGC:使用并行垃圾回收器。
•-XX:+UseConcMarkSweepGC:使用并发标记-清除垃圾回收器。
•-XX:+UseG1GC:使用G1垃圾回收器。
3. 调试参数•-Xdebug:启用调试模式,程序会暂停等待调试器连接。
•-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<address>:远程调试参数,允许远程调试Java程序。
4. 性能分析参数•-Xprof:启用性能分析,程序会输出运行时的性能统计信息。
•-Xmx<size>:指定JVM堆内存的最大值。
三、常见使用场景和示例1. 指定类路径在执行Java程序时,可以通过-classpath参数指定程序所需的类路径。
例如:java -classpath mylib.jar:myclasses com.example.MyProgram这个命令会将mylib.jar和myclasses目录添加到类路径中,并执行com.example.MyProgram类。
java命令大全在Java中,可以使用许多命令来编译、运行和调试Java程序。
以下是一些常见的Java命令:1. `java`:用于运行Java程序。
例如:`java HelloWorld`将运行名为`HelloWorld`的Java程序。
2. `javac`:用于将Java源代码编译为Java字节码文件。
例如:`javac HelloWorld.java`将编译名为`HelloWorld.java`的Java源代码文件。
3. `jar`:用于创建和管理Java归档文件。
例如:`jar cvf MyJar.jar MyClass.class`将创建一个名为`MyJar.jar`的归档文件,并将`MyClass.class`添加到其中。
4. `javadoc`:用于生成Java文档。
例如:`javadoc MyPackage/*.java`将生成`MyPackage`中所有Java文件的文档。
5. `javap`:用于反汇编Java字节码文件。
例如:`javap MyClass`将显示与名为`MyClass`的类关联的字节码。
6. `jarsigner`:用于对已签名的Java应用程序和程序包进行签名和验证。
例如:`jarsigner -sign MyJar.jar keyAlias`将对`MyJar.jar`进行签名。
7. `jdb`:Java调试器的命令行界面。
例如:`jdb MyProgram`将使用`jdb`调试名为`MyProgram`的Java程序。
8. `jrunscript`:用于在命令行上运行脚本的命令。
例如:`jrunscript MyScript.js`将运行名为`MyScript.js`的JavaScript脚本。
9. `jps`:用于列出当前正在运行的Java进程。
例如:`jps -l`将列出所有Java进程的进程ID和类路径。
这只是一小部分常用的Java命令清单,Java还有许多其他命令用于不同的目的。
这一篇主要介绍与java相关标签的使用终于始重头戏了,Java部分们的重也中用处最多的部分。
1. <javac>编译java源文件成class文件。
<javac srcdir="${src}" destdir="${dest}" encoding="utf-8"bootclasspathref="project.classpath" includejavaruntime="true" includeantruntime="false" optimize="true" source="1.6" target="1.6"/>(1). srcdir:java源文件的文件夹,也可以在内部嵌套<src>标签(2). destdir:用于存放编译后class文件的文件夹,默认当前文件夹。
(3). includes:必须包括的文件模式的列表,以逗号或空格分隔。
如果忽略,将包括所有文件。
(4). includesfile:指定一个包含很多include的文件,同样可以用通配符来指定。
(5). excludes:必须排除的文件模式的列表,以逗号或空格分隔。
如果忽略,将不排除任何文件。
(6). excludesfile:指定一个包含很多exclude的文件,同样可以用通配符来指定。
(7). classpath: 编译所使用的classpath(8). sourcepath: 指定源资源文件夹。
默认指向srcdir(9). bootclasspath: 启动时设置classpath(10). classpathref:引用其他classpath(11). sourcepathref:引用其他源文件目录(12). bootclasspathref:启动时引用其他classpath设置(13). extdirs:扩展文件的路径。
javac命令详解介绍在Java的开发过程中,我们通常需要将源代码编译成可执行的字节码文件,这样才能在Java虚拟机上运行。
而javac命令就是Java编译器的命令行工具,它能够将Java源代码文件编译成字节码文件,为后续的运行做准备。
语法javac命令的基本语法如下:javac [options] [sourcefiles]选项javac命令提供了丰富的选项,用于控制编译的过程和结果。
下面是一些常用的选项:-g该选项可以生成调试信息,包括变量名、行号等,方便在调试过程中观察变量的值和代码的执行流程。
在开发过程中通常需要使用该选项进行调试。
-nowarn该选项用于忽略警告信息,编译器在编译过程中会生成一些警告信息,例如未使用的变量等。
使用该选项可以避免这些警告信息的输出。
-classpath该选项用于指定编译器查找类文件的路径。
在编译过程中,编译器需要找到引用的类的定义,将其编译成字节码文件。
可以使用该选项来指定类文件所在的路径。
-d该选项用于指定编译后的字节码文件的输出目录。
默认情况下,编译后的字节码文件与源代码文件存放在同一个目录下,使用该选项可以将编译后的字节码文件输出到指定的目录。
示例假设我们有一个名为HelloWorld.java的Java源代码文件,内容如下:public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}我们可以使用javac命令将其编译成字节码文件:javac HelloWorld.java执行上述命令后,如果没有错误信息输出,则说明编译成功。
此时会在当前目录下生成一个名为HelloWorld.class的字节码文件。
错误信息如果源代码文件存在错误,javac命令在编译过程中会生成相应的错误信息。
例如,如果将HelloWorld.java文件中的println拼写错误为pirntln,编译过程中会输出错误信息:HelloWorld.java:3: error: cannot find symbolSystem.pirntln("Hello, World!");^symbol: method pirntln(String)location: variable out of type PrintStream1 error通过查看错误信息,我们可以定位源代码文件中的错误,方便进行修正。
JAVAC 命令详解结构javac [ options ] [ sourcefiles ] [ @files ]参数可按任意次序排列。
options命令行选项。
sourcefiles一个或多个要编译的源文件(例如MyClass.java)。
@files一个或多个对源文件进行列表的文件。
说明javac有两种方法可将源代码文件名传递给javac:∙如果源文件数量少,在命令行上列出文件名即可。
∙如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。
然后在javac 命令行中使用该列表文件名,文件名前冠以@ 字符。
源代码文件名称必须含有.java后缀,类文件名称必须含有.class后缀,源文件和类文件都必须有识别该类的根名。
例如,名为MyClass的类将写在名为MyClass.java的源文件中,并被编译为字节码类文件MyClass.class。
内部类定义产生附加的类文件。
这些类文件的名称将内部类和外部类的名称结合在一起,例如MyClass$MyInnerClass.class。
应当将源文件安排在反映其包树结构的目录树中。
例如,如果将所有的源文件放在/workspace 中,那么com.mysoft.mypack.MyClass的代码应该在\workspace\com\mysoft\mypack\MyClass.java 中。
缺省情况下,编译器将每个类文件与其源文件放在同一目录中。
可用-d 选项(请参阅后面的选项)指定其它目标目录。
工具读取用Java 编程语言编写的类和接口定义,并将它们编译成字节码类文件。
查找类型当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。
对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。
这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。
例如,当扩展java.applet.Applet时还要用到Applet的祖先类:java.awt.Panel、java.awt.Container、ponent和java.awt.Object。
当编译器需要类型信息时,它将查找定义类型的源文件或类文件。
编译器先在自举类及扩展类中查找,然后在用户类路径中查找。
用户类路径通过两种途径来定义:通过设置CLASSPATH环境变量或使用-classpath命令行选项。
(有关详细资料,请参阅设置类路径)。
如果使用-sourcepath选项,则编译器在sourcepath指定的路径中查找源文件;否则,编译器将在用户类路径中查找类文件和源文件。
可用-bootclasspath和-extdirs选项来指定不同的自举类或扩展类;参阅下面的联编选项。
成功的类型搜索可能生成类文件、源文件或两者兼有。
以下是javac对各种情形所进行的处理:∙搜索结果只生成类文件而没有源文件:javac使用类文件。
∙搜索结果只生成源文件而没有类文件:javac编译源文件并使用由此生成的类文件。
∙搜索结果既生成源文件又生成类文件:确定类文件是否过时。
若类文件已过时,则javac重新编译源文件并使用更新后的类文件。
否则,javac直接使用类文件。
缺省情况下,只要类文件比源文件旧,javac就认为它已过时。
(-Xdepend选项指定相对来说较慢但却比较可靠的过程。
)javac注意:javac可以隐式编译一些没有在命令行中提及的源文件。
用-verbose选项可跟踪自动编译。
文件列表为缩短或简化javac命令,可以指定一个或多个每行含有一个文件名的文件。
在命令行中,采用'@' 字符加上文件名的方法将它指定为文件列表。
当javac 遇到以`@' 字符开头的参数时,它对那个文件中所含文件名的操作跟对命令行中文件名的操作是一样的。
这使得Windows 命令行长度不再受限制。
例如,可以在名为sourcefiles的文件中列出所有源文件的名称。
该文件可能形如:MyClass1.javaMyClass2.javaMyClass3.java然后可用下列命令运行编译器:C:> javac @sourcefiles选项编译器有一批标准选项,目前的开发环境支持这些标准选项,将来的版本也将支持它。
还有一批附加的非标准选项是目前的虚拟机实现所特有的,将来可能要有变化。
非标准选项以-X打头。
标准选项-classpath类路径设置用户类路径,它将覆盖CLASSPATH环境变量中的用户类路径。
若既未指定CLASSPATH又未指定-classpath,则用户类路径由当前目录构成。
有关详细信息,请参阅设置类路径。
若未指定-sourcepath选项,则将在用户类路径中查找类文件和源文件。
-d目录设置类文件的目标目录。
如果某个类是一个包的组成部分,则javac将把该类文件放入反映包名的子目录中,必要时创建目录。
例如,如果指定-d c:\myclasses并且该类名叫com.mypackage.MyClass,那么类文件就叫作c:\myclasses\com\mypackage\MyClass.class。
若未指定-d选项,则javac将把类文件放到与源文件相同的目录中。
注意:-d选项指定的目录不会被自动添加到用户类路径中。
-deprecation显示每种不鼓励使用的成员或类的使用或覆盖的说明。
没有给出-deprecation选项的话,javac将显示这类源文件的名称:这些源文件使用或覆盖不鼓励使用的成员或类。
-encoding设置源文件编码名称,例如EUCJIS/SJIS。
若未指定-encoding选项,则使用平台缺省的转换器。
-g生成所有的调试信息,包括局部变量。
缺省情况下,只生成行号和源文件信息。
-g:none不生成任何调试信息。
-g:{关键字列表}只生成某些类型的调试信息,这些类型由逗号分隔的关键字列表所指定。
有效的关键字有:source源文件调试信息lines行号调试信息vars局部变量调试信息-nowarn禁用警告信息。
-O优化代码以缩短执行时间。
使用-O选项可能使编译速度下降、生成更大的类文件并使程序难以调试。
在JDK 1.2 以前的版本中,javac 的-g选项和-O选项不能一起使用。
在JDK1.2 中,可以将-g和-O选项结合起来,但可能会得到意想不到的结果,如丢失变量或重新定位代码或丢失代码。
-O选项不再自动打开-depend或关闭-g选项。
同样,-O选项也不再允许进行跨类内嵌。
-sourcepath源路径指定用以查找类或接口定义的源代码路径。
与用户类路径一样,源路径项用分号(;)进行分隔,它们可以是目录、JAR 归档文件或ZIP 归档文件。
如果使用包,那么目录或归档文件中的本地路径名必须反映包名。
注意:通过类路径查找的类,如果找到了其源文件,则可能会自动被重新编译。
-verbose冗长输出。
它包括了每个所加载的类和每个所编译的源文件的有关信息。
联编选项缺省情况下,类是根据与javac一起发行的JDK 自举类和扩展类来编译。
但javac也支持联编,在联编中,类是根据其它Java平台实现的自举类和扩展类来进行编译的。
联编时,-bootclasspath和-extdirs的使用很重要;请参阅下面的联编程序示例。
-target版本生成将在指定版本的虚拟机上运行的类文件。
缺省情况下生成与 1.1 和 1.2 版本的虚拟机都兼容的类文件。
JDK 1.2 中的javac所支持的版本有:1.1保证所产生的类文件与 1.1 和 1.2 版的虚拟机兼容。
这是缺省状态。
1.2生成的类文件可在1.2 版的虚拟机上运行,但不能在 1.1 版的虚拟机上运行。
-bootclasspath自举类路径根据指定的自举类集进行联编。
和用户类路径一样,自举类路径项用分号(;) 进行分隔,它们可以是目录、JAR 归档文件或ZIP 归档文件。
-extdirs目录根据指定的扩展目录进行联编。
目录是以分号分隔的目录列表。
在指定目录的每个JAR 归档文件中查找类文件。
非标准选项-X显示非标准选项的有关信息并退出。
-Xdepend递归地搜索所有可获得的类,以寻找要重编译的最新源文件。
该选项将更可靠地查找需要编译的类,但会使编译进程的速度大为减慢。
-Xstdout将编译器信息送到System.out中。
缺省情况下,编译器信息送到System.err中。
-Xverbosepath说明如何搜索路径和标准扩展以查找源文件和类文件。
-J选项将选项传给javac调用的java启动器。
例如,-J-Xms48m将启动内存设为48 兆字节。
虽然它不以-X开头,但它并不是javac的‘标准选项’。
用-J将选项传给执行用Java 编写的应用程序的虚拟机是一种公共约定。
注意:CLASSPATH、-classpath、-bootclasspath和-extdirs并不指定用于运行javac的类。
如此滥用编译器的实现通常没有任何意义而且总是很危险的。
如果确实需要这样做,可用-J选项将选项传给基本的java启动器。
程序示例编译简单程序一个源文件Hello.java,它定义了一个名叫greetings.Hello的类。
greetings目录是源文件和类文件两者的包目录,且它不是当前目录。
这让我们可以使用缺省的用户类路径。
它也使我们没必要用-d选项指定单独的目标目录。
C:> dirgreetings/C:> dir greetingsHello.javaC:> cat greetings\Hello.javapackage greetings;public class Hello {public static void main(String[] args) {for (int i=0; i < args.length; i++) {System.out.println("Hello " + args[i]);}}}C:> javac greetings\Hello.javaC:> dir greetingsHello.class Hello.javaC:> java greetings.Hello World Universe EveryoneHello WorldHello UniverseHello Everyone编译多个源文件该示例编译greetings包中的所有源文件。
C:> dirgreetings\C:> dir greetingsAloha.java GutenTag.java Hello.java Hi.java C:> javac greetings\*.javaC:> dir greetingsAloha.class GutenTag.class Hello.class Hi.class Aloha.java GutenTag.java Hello.java Hi.java指定用户类路径对前面示例中的某个源文件进行更改后,重新编译它:C:> cd\examplesC:> javac greetings\Hi.java由于greetings.Hi引用了greetings包中其它的类,编译器需要找到这些其它的类。