命令行cmd使用javac编译java程序

命令行cmd使用javac编译java程序

1.1 编译选项

在cmd中执行javac -help可以看到帮助信息

D:\temp>javac -help

用法: javac

其中, 可能的选项包括:

-g 生成所有调试信息

-g:none 不生成任何调试信息

-g:{lines,vars,source} 只生成某些调试信息

-nowarn 不生成任何警告

-verbose 输出有关编译器正在执行的操作的消息

-deprecation 输出使用已过时的 API 的源位置

-classpath <路径> 指定查找用户类文件和注释处理程序的位置

-cp <路径> 指定查找用户类文件和注释处理程序的位置

-sourcepath <路径> 指定查找输入源文件的位置

-bootclasspath <路径> 覆盖引导类文件的位置

-extdirs <目录> 覆盖所安装扩展的位置

-endorseddirs <目录> 覆盖签名的标准路径的位置

-proc:{none,only} 控制是否执行注释处理和/或编译。

-processor [,,...] 要运行的注释处理程序的名称; 绕过默认的搜索进程

-processorpath <路径> 指定查找注释处理程序的位置

-parameters 生成元数据以用于方法参数的反射

-d <目录> 指定放置生成的类文件的位置

-s <目录> 指定放置生成的源文件的位置

-h <目录> 指定放置生成的本机标头文件的位置

-implicit:{none,class} 指定是否为隐式引用文件生成类文件

-encoding <编码> 指定源文件使用的字符编码

-source <发行版> 提供与指定发行版的源兼容性

-target <发行版> 生成特定 VM 版本的类文件

-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用

-version 版本信息

-help 输出标准选项的提要

-A关键字[=值] 传递给注释处理程序的选项

-X 输出非标准选项的提要

-J<标记> 直接将 <标记> 传递给运行时系统

-Werror 出现警告时终止编译

@<文件名> 从文件读取选项和文件名

1.2 编译Java程序

1.2.1 直接编译当前目录下文件

编写以下代码并保存成Date2.java:

import java.util.Calendar;

import java.util.Locale;

public class Date2 {

public static void main(String[] args) {

Calendar calendar = Calendar.getInstance(Locale.CHINA);

System.out.println("获取时间: " + calendar.getTime());

}

}

然后在命令行执行javac Date2.java即可编译,

接着执行java Date2即可运行程序:

1.2.2 带有包路径的编译

我们在当前文件夹下新建com/amnotgcs文件目录,

并在里面创建Num3.java,即com/amnotgcs/Num3.java

输入下面代码:

package com.amnotgcs;

import java.util.Scanner;

import java.text.NumberFormat;

import java.text.ParseException;

public class Num3 {

public static void main(String[] args) throws ParseException {

Scanner scanner = new Scanner(System.in);

System.out.print("Please input a num: ");

String input = scanner.next();

NumberFormat nf = NumberFormat.getInstance();

System.out.println(nf.parse(input));

}

}

然后我们在当前文件夹下执行javac com/amnotgcs/Num3.java编译程序,

接着执行java com.amnotgcs.Num3或java com/amnotgcs/Num3来运行程序:

我们这样编译时因为代码中有了包路径,直接编译会报找不到类错误,

当然我们也可以使用另一种编译方式。

我们在Num3.java所在目录执行javac -d . Num3.java来编译程序,

这样编译会在当前目录产生pacage所指定的目录,并编译程序。

1.2.3 指定编码编译

我们仍使用1.2.1的代码,

在编译后后运行可能会出现乱码的情况:

这是由于编码不统一导致的错误,

这涉及到了两个编码:一个时命令行所使用的编码,一个是你.java文件使用的编码。

只有你输出时cmd的编码和你编译时.java文件的编码一样才能正常输出。

所以要想正确输出:

1、你可以更改.java文件的编码和你cmd编码一致

2、或者你可以更改cmd编码和你.java文件编码一致

3、编译时指定编码

在cmd中执行chcp可以查看编码,也可以执行chcp xxxx临时设置编码,

比如chcp 65001设置为UTF-8编码,

chcp 936设置为GBK编码。

文件的编码可以在保存或另存为时选择编码,

或在其他文本编辑器中直接指定编码,

比如在notepad3中直接指定编码:

编译时指定编码:

用法:-encoding <编码> 指定源文件使用的字符编码

下图编译时文件使用的是UTF-8编码,所以我用-encoding UTF-8指定了UTF-8编码

✨ 相关作品

网易的外包怎么样
28365365体育在线备用

网易的外包怎么样

📅 01-02 👁️‍🗨️ 8365
频率50hz是什么意思
28365365体育在线备用

频率50hz是什么意思

📅 01-13 👁️‍🗨️ 5095
2030世界杯决赛场地争夺战,伯纳乌球场抢占先机
28365365体育在线备用

2030世界杯决赛场地争夺战,伯纳乌球场抢占先机

📅 02-06 👁️‍🗨️ 5916