Java_命令行

常用的Windows Dos命令

cd          →       指定目录

cd..        →       返回上级目录

cd/         →       返回到根目录

dir          →       列出当前目录下的所有文件夹和文件

md         →       创建目录

rd           →       删除目录

del         →       删除目录下的所有文件(子目录的文件不会被删除)

ren         →       重命名

copy       →       复制文件

javac、java命令

java文件存放目录:

D:\workspace\src\com\test\HelloWorld.java

编译运行:

D:\workspace\src\com\test>javac HelloWorld.java

D:\workspace\src\com\test>java HelloWorld

以上是最简单的javac、java的命令。

另外,javac可以指定相对路径和绝对路径,以下两种javac命令都是可以的:

D:\>javac workspace\src\com\test\HelloWorld.java

D:\>javac d:\workspace\src\com\test\HelloWorld.java

运行的时候不是指定路径,而是指定包名(前提是已经为HelloWorld.java指定了包名,并且文件夹的结构也要和包名一致):

D:\workspace\src>java com.test.HelloWorld

-sourcepath、-classpath

-sourcepath:指定.java文件,可以是目录、jar文件、zip文件,指定多个可以用分号隔开

-classpath(-cp):指定.class文件,可以使目录、jar文件、zip文件,指定多个可以用分号隔开(如果没有指定classpath,则使用系统环境变量中的classpath)

有以下两个java文件(HelloWorld.java中有对Student的引用)

D:\workspace\src\com\test\HelloWorld.java

D:\workspace\src\com\test\entity\Student.java

如果直接编译的话(D:\workspace\src>javac com\test\HelloWorld.java)会报错,原因是没有指定引用的类。

解决方法1(指定classpath):

D:\workspace\src>javac com\test\entity\Student.java

D:\workspace\src>javac -classpath com\test\entity com\test\HelloWorld.java

(运行的时候classpath要加分号:D:\workspace\src>java -classpath com\test\entity; com.test.HelloWorld)

解决方法2(指定sourcepath):

D:\workspace\src>javac -sourcepath com\test\entity com\test\HelloWorld.java

解决方法3(同时指定sourcepath和classpath):

D:\workspace\src>javac -classpath com\test\entity -sourcepath com\test\entity com\test\HelloWorld.java

编译器首先会判断Student.class和Student.java是否同时存在,如果单独存在,则适应其中之一,如果同时存在,则判断Student.class是不是Student.java的最新版本,如果不是最新版本,则重新编译。

同时编译多个java文件

有两种方法:

1、如果文件都在同一目录

      假设有四个文件:HelloWorld1.java、HelloWorld2.java、HelloWorld3.java、HelloWorld4.java

      那么可以这么写:javac HelloWorld*.java或者javac *.java

2、如果文件不在同一目录

      假设有四个文件:HelloWorld1.java、HelloWorld2.java、HelloWorld3.java、HelloWorld4.java。它们分别在1、2、3、4这四个文件夹里面

      那么可以先建一个文件(FilesList.txt)在D盘,然后在此文件里面添加如下内容

      D:\1\HelloWorld1.java

      D:\2\HelloWorld2.java

      D:\3\HelloWorld3.java

      D:\4\HelloWorld4.java

      然后直接输入命令javac @FilesList.txt

将.java文件和.class分开

如果直接用javac HelloWorld.java,那么编译后的HelloWorld.class和HelloWorld.java在同一目录下,那么,怎么让它们不在同一目录下呢?

使用-d指定目录(-d的目录不会自动创建,要手动创建):

D:\workspace> javac -sourcepath src\com\test -classpath classes \src\com\test\*.java -d classes

让.class按照包的目录结构存放:

假设D:\java\Test.java的包定义是:package com.test;

编译:D:\java>javac Test.java -d .\(编译之后Test.class被放到了D:\java\com\test中去了,和上面的不同,这里的目录是自动创建的)

运行:D:\java>java com.test.Test

jar命令

用法: 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/ .

jar cf test.jar *.class :将所有的class文件打包

jar cvf test.jar *.class :将所有的class文件打包,并在dos窗口中生成详细输出

jar tf test.jar :显示test.jar中的所有目录及文件(目录下的目录和文件也会显示)

jar cvfm classes.jar mymanifest -C foo/ . :打包的时候使用指定的manifest文件并将foo/目录中的所有文件归档到"classes.jar" 中


把归档后的test.jar文件解压,会发现多了个META-INF目录,META-INF目录下有个MANIFEST.MF文件,MANIFEST.MF文件的内容如下:

Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
 
 
注意:此文件末尾有两个空行
我们用-m指令可以指定manifest文件(也就是指定打包的时候META-INF目录下的MANIFEST.MF文件的内容)。我们现在新建一个MYMANIFEST.MF文件,内容如下:
Manifest-Version: 1.0
Class-Path: ./lib/msbase.jar ./lib/mssqlserver.jar ./lib/msutil.jar
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: HelloWord
 
 
Main-Class:程序的入口类,也就是程序启动时最先调用的类

Class-Path:支持的库

注意:

1)末尾的两个空行同样不可少

2)Class-Path:和Main-Class:后面要有一个空格

以上两个注意点中的任意一个不符合的话,运行起来都会报错“Invalid or corrupt jarfile xxx.jar”

javadoc命令

javadoc命令是把代码中的javadoc转化为帮助文档的命令。

用法:javadoc [选项] [软件包名称] [源文件] [@file]
-overview <文件>          读取 HTML 文件的概述文档
-public                   仅显示公共类和成员
-protected                显示受保护/公共类和成员(默认)
-package                  显示软件包/受保护/公共类和成员
-private                  显示所有类和成员
-help                     显示命令行选项并退出
-doclet <类>              通过替代 doclet 生成输出
-docletpath <路径>        指定查找 doclet 类文件的位置
-sourcepath <路径列表>    指定查找源文件的位置
-classpath <路径列表>     指定查找用户类文件的位置
-exclude <软件包列表>     指定要排除的软件包的列表
-subpackages <子软件包列表> 指定要递归装入的子软件包
-breakiterator            使用 BreakIterator 计算第 1 句
-bootclasspath <路径列表> 覆盖引导类加载器所装入的类文件的位置
-source <版本>            提供与指定版本的源兼容性
-extdirs <目录列表>       覆盖安装的扩展目录的位置
-verbose                  输出有关 Javadoc 正在执行的操作的消息
-locale <名称>            要使用的语言环境,例如 en_US 或 en_US_WIN
-encoding <名称>          源文件编码名称
-quiet                    不显示状态消息
-J<标志>                  直接将 <标志> 传递给运行时系统

通过标准 doclet 提供:
-d <directory>                    输出文件的目标目录
-use                              创建类和包用法页面
-version                          包含 @version 段
-author                           包含 @author 段
-docfilessubdirs                  递归复制文档文件子目录
-splitindex                       将索引分为每个字母对应一个文件
-windowtitle <text>               文档的浏览器窗口标题
-doctitle <html-code>             包含概述页面的标题
-header <html-code>               包含每个页面的页眉文本
-footer <html-code>               包含每个页面的页脚文本
-top    <html-code>               包含每个页面的顶部文本
-bottom <html-code>               包含每个页面的底部文本
-link <url>                       创建指向位于 <url> 的 javadoc 输出的链接
-linkoffline <url> <url2>         利用位于 <url2> 的包列表链接至位于 <url> 的文档
-excludedocfilessubdir <name1>:..排除具有给定名称的所有文档文件子目录。
-group <name> <p1>:<p2>..在概述页面中,将指定的包分组
-nocomment                        不生成描述和标记,只生成声明。
-nodeprecated                     不包含 @deprecated 信息
-noqualifier <name1>:<name2>:...输出中不包括指定限定符的列表。
-nosince                          不包含 @since 信息
-notimestamp                      不包含隐藏时间戳
-nodeprecatedlist                 不生成已过时的列表
-notree                           不生成类分层结构
-noindex                          不生成索引
-nohelp                           不生成帮助链接
-nonavbar                         不生成导航栏
-serialwarn                       生成有关 @serial 标记的警告
-tag <name>:<locations>:<header>  指定单个参数自定义标记
-taglet                           要注册的 Taglet 的全限定名称
-tagletpath                       Taglet 的路径
-charset <charset>                用于跨平台查看生成的文档的字符集。
-helpfile <file>                  包含帮助链接所链接到的文件
-linksource                       以 HTML 格式生成源文件
-sourcetab <tab length>           指定源中每个制表符占据的空格数
-keywords                         使包、类和成员信息附带 HTML 元标记
-stylesheetfile <path>            用于更改生成文档的样式的文件
-docencoding <name>               输出编码名称


javadoc HelloWorld.java

javadoc HelloWorld01.java HelloWorld02.java HelloWorld03.java

javadoc -d api @classlist.txt :@classlist.txt文件中指定了要生成文档的类的list,-d api指定文档生成到api目录下

除了指定.java文件,还可以指定包名。

比如想给com.test包底下的.java文件生成javadoc:D:>javadoc -sourcepath D:\workspace\src com.test

比如想给com.test包底下的.class文件生成javadoc:D:>javadoc -classpath D:\workspace\lib com.test

比如想给com.test包底下的.java文件和.class文件生成javadoc:D:>javadoc -sourcepath D:\workspace\src -classpath D:\workspace\lib com.test

其他命令

  • -verbose : verbose是“冗长的,啰唆的,累赘的”的意思,也就是把编译的步骤,过程显示出来

编译:D:\>javac -verbose -d com/test HelloWorld.java


  • -encoding : 指定源文件的编码,注意不是.class文件的编码

编译:D:\>javac -encoding UTF-8 -d com/test HelloWorld.java

指定读取java文件采用UTF-8编码


  • -source

当你从sun安装了某个版本的JDK,而其实该JDK却包含多个版本的编译器。-source参数就是指定用哪个版本的编译器对java源码进行编译。如果你的java源

码不符合该版本编译器的规范的话,当然就不能编译通过。

编译:D:\>javac -source 1.6 HelloWorld.java

  • -target
该 命令用于指定生成的class文件将保证和哪个版本的虚拟机进行兼容。我们可以通过-target 1.2来保证生成的class文件能在1.2虚拟机上进行运行,但是1.1的虚拟机就不能保证了。因为java虚拟机的向前兼容行,1.5的虚拟机当然也 可以运行通过-target 1.2让生成的class文件。
每个版本编译器的默认-target版本是不太一样的,
比如:
JDK1.2版本编译器支持-target 1.1,-target 1.2,-target 1.3,-target 1.4,-target 1.5,-target 1.6,它默认的就是1.1
JDK1.4版本编译器只支持-target 1.4 和-target 1.5
JDK1.5版本编译器就只支持-target 1.5

  • -deprecation

如果java源码中使用了的不鼓励使用的类或类的Field或类的方法或类的方法覆盖,那么如果使用了该参数,将显示关于此的的详细信息,否则只有个简单的Note.

对于以下代码:

public class HelloWorld {
    public static void main(String[] args) {
        Thread t = new Thread();
        t.destroy();
        System.out.println("Hello World!");
    }
}

执行命令:D:\>javac -deprecation HelloWorld.java

结果会提示t.destroy();不推荐使用。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值