zoukankan      html  css  js  c++  java
  • 命令行cmd使用javac编译java程序

    1.1 编译选项

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

    D:\temp>javac -help
    用法: javac <options> <source files>
    其中, 可能的选项包括:
      -g                         生成所有调试信息
      -g:none                    不生成任何调试信息
      -g:{lines,vars,source}     只生成某些调试信息
      -nowarn                    不生成任何警告
      -verbose                   输出有关编译器正在执行的操作的消息
      -deprecation               输出使用已过时的 API 的源位置
      -classpath <路径>            指定查找用户类文件和注释处理程序的位置
      -cp <路径>                   指定查找用户类文件和注释处理程序的位置
      -sourcepath <路径>           指定查找输入源文件的位置
      -bootclasspath <路径>        覆盖引导类文件的位置
      -extdirs <目录>              覆盖所安装扩展的位置
      -endorseddirs <目录>         覆盖签名的标准路径的位置
      -proc:{none,only}          控制是否执行注释处理和/或编译。
      -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
      -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.Num3java 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编码

    有了计划记得推动,不要原地踏步。
  • 相关阅读:
    线段树(segment tree)
    外排序
    【机器学习】如何成为当下合格的算法工程师
    Result Maps collection already contains value for
    负向零宽断言
    正则匹配中 ^ $ 和  的区别
    jq异步上传文件(转载)
    js触发按钮点击事件
    ./ ,../ , 以及/的区别
    eclipse遇到不会部署的情况
  • 原文地址:https://www.cnblogs.com/amnotgcs/p/15585916.html
Copyright © 2011-2022 走看看