Java 命令行传参详解

说白了就是向Java的 main 方法传递参数,那怎么传呢,前面已经习惯了IDEA使用这集成工具,首先想到的是下面的Terminal标签,因为这是~Intellij IDEA~的终端模拟器,可以理解为Windows 的CMD。

示例:

package com.zctou.method;

public class Demo04 {
    public static void main(String[] args) {
        //命令行传参
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]"+ args[i]);
        }
    }
}

一、IDEA运行程序( Run)时给main 方法传递参数的方法:

1、先新建Demo04,敲入测试代码并编译

Java方法详解04 - 命令行传参

2、菜单栏 -> Run -> Edit Configurations,弹出对话框

Java方法详解04 - 命令行传参

3、 在Build and run 中找到参数位置,输入要运传入main的参数即可。

Java方法详解04 - 命令行传参

4、 输出结果:

args[0]hello
args[1]zctou.com
args[2]here!

二、利用IDEA Terminal模拟命令行给Main传递参数:

  1. 找到项目class文件所在根目录,这里是(D:\MyCode\JavaSE\out\production\基础语法

    Java方法详解04 - 命令行传参

  2. 进入Terminal,可以看到,默认所在目录为项目的根目录(这里是:D:\MyCode\JavaSE\基础语法

    Java方法详解04 - 命令行传参

  3. 进入class文件目录,利用命令行执行已经生成的Demo04.class

    D:\MyCode\JavaSE\基础语法>cd D:\MyCode\JavaSE\out\production\基础语法
    
    D:\MyCode\JavaSE\out\production\基础语法>java com.zctou.method.Demo04 hello zctou.com 
    args[0]hello
    args[1]zctou.com
    args[2]here!
注意:

因为Java文件内引入了包com.zctou.method,所以不能在Demo04所在子文件夹执行文件,要在包前的文件夹下执行。

如:这里Demo04.class文件的完成路径是:D:\MyCode\JavaSE\out\production\基础语法\com\zctou\method

那么执行java 运行命令的文件夹就是D:\MyCode\JavaSE\out\production\基础语法,也就是上面代码一开始看到的 cd D:\MyCode\JavaSE\out\production\基础语法由来。

三、在IDEA Terminal下使用命令行传递参数:

除了利用IDEA build的class文件,也可以在Terminal下自己使用javac命令编译文件:
  1. 在 IntelliJ IDEA的Terminal 利用javac编译时内出现报错:编码GBK的不可映射字符怎么解决?如图

    Java方法详解04 - 命令行传参

  • 菜单栏,找到 File -> Settings ->搜索 File Encodings -> 全部选UTF-8 , Default encoding for properties files 也选择 UTF-8, 保存

    Java方法详解04 - 命令行传参

  • 在项目文件中右键,点击Build Module(基础语法)重新加载项目。

    如果还不能解决问题,就在javac 上加上 -encoding UTF-8

    如:

    D:\MyCode\JavaSE\基础语法\src\com\zctou\method>javac Demo04.java
    Demo04.java:5: 错误: 编码GBK的不可映射字符
            //鍛戒护琛屼紶鍙?
                     ^
    1 个错误
    
    D:\MyCode\JavaSE\基础语法\src\com\zctou\method>javac Demo04.java -encoding UTF-8
    
    D:\MyCode\JavaSE\基础语法\src\com\zctou\method>
  1. 编译完class文件后,同样需要到java文件中引用的包上一级目录com.zctou.method的上一级目录为src。

    直接 cd D:\MyCode\JavaSE\基础语法\src,跟第二种方法一样,直接利用命令运行即可。

    D:\MyCode\JavaSE\基础语法>cd src
    
    D:\MyCode\JavaSE\基础语法\src>java com.zctou.method.Demo04
    
    D:\MyCode\JavaSE\基础语法\src>java com.zctou.method.Demo04 hello zctou.com here!
    args[0]hello
    args[1]zctou.com
    args[2]here!

四、 在CMD中运行命令行测试Java 给main方法传参:

D:\MyCode\JavaSE\基础语法\src\com\zctou\method>javac Demo04.java
Demo04.java:5: 错误: 编码GBK的不可映射字符
        //鍛戒护琛屼紶鍙?
                 ^
1 个错误

D:\MyCode\JavaSE\基础语法\src\com\zctou\method>javac Demo04.java -encoding utf-8

D:\MyCode\JavaSE\基础语法\src\com\zctou\method>cd D:\MyCode\JavaSE\基础语法\src

D:\MyCode\JavaSE\基础语法\src>java Demo04 hello zctou.com here!
错误: 找不到或无法加载主类 Demo04

D:\MyCode\JavaSE\基础语法\src>java com.zctou.method.Demo04 hello zctou.com here!
args[0]hello
args[1]zctou.com
args[2]here!

D:\MyCode\JavaSE\基础语法\src>
可以看到 cmd的操作跟 idea中的terminal 是一样的。

Java方法详解04 - 命令行传参