java 命令行 | 您所在的位置:网站首页 › javac和java › java 命令行 |
java 命令行有两个常用命令:javac 和 java。 javac 用于编译,java 用于运行。 使用 javac 命令编译假设命令行的当前工作目录下存在源文件 org/example/Demo.java(其中 org 和 example 为文件夹,Demo.java 为文件 ): package org.example; public class Demo { public static void main(String[] args) { System.out.println("你好"); } }使用如下命令编译: javac org/example/Demo.java注意:必须带 .java 后缀(只有使用文件全名才能找到这个文件 )。 org/example 目录下就会生成 Demo.class。 如果 Demo.java 就位于当前目录,也可以使用如下命令编译: javac -d . Demo.java上述命令会在当前目录下会生成 org/example/ 文件夹,并在 org/example/ 下生成 Demo.class。 如果 Demo.java 位于当前目录,且你使用 javac Demo.java 编译,则你需要手动创建 org/example/ 文件夹,并将编译好的 Demo.class 放到 org/example/ 目录下。 特别说明:编译器会将全部有关系的 .class 文件都编译。例如,Demo.java 中使用了 A.java 中定义的类,那在编译 Demo.java 时,A.java 也会被一同编译。(这种依赖既是编译时依赖,也是运行时依赖) 依赖的 jar 包必须使用 -cp (或 -classpath 或 --class-path)选项指明: javac -cp ".;path/to/.jar" Demo.java上述代码将当前目录 . 和 path/to/.jar 设为了类路径。 特别说明:Powershell 中用分号分隔两个语句,-cp 后的路径也用分号分隔,为了避免 Powershell 将分号视为分隔符,-cp 后的路径必须用引号括起来。 编译时标明源码: javac -encoding UTF-8 Demo.java。编译时指定要在哪个版本的 java 平台上运行: --source 或 -source 。 可以替换为 7、8、9、10、11、12、13、14、15、16 或 17。 使用 java 命令运行java org.example.Demo注意:不能带 .class 后缀!文件夹之间用句点,而非斜杠。 如果有参数,用空格隔开。例如,运行下面这个程序:java org.example.Demo a 1 bc 23 。 package org.example; public class Demo { public static void main(String[] args) { for (String s : args) System.out.print(s); } }命令行会打印出 a1bc23。 编译时如果使用了 -cp 选项,运行时也必须使用 -cp 选项。而且,运行时的 classpath 范围可能更大。例如,Demo.java 引用了 A.jar,A.jar 又引用了 B.jar,则编译时,-cp 只需要指明 A.jar,但运行时,-cp 需要同时指明 A.jar 和 B.jar。(这里的 B.jar 就只是运行时依赖,不是编译时依赖) 当引用的 jar 包越来越多时,就需要 Maven 出马了。还是以上面这个例子来介绍整个流程: 使用 mvn install 打包生成 A.jar,并将其安装(安装就是将 A.jar 放入本地仓库,并生成对应的 .pom 文件),此时我们就可以使用 Maven 引入 A.jar 了;使用 Maven 引入 A.jar。因为 A.jar 的 .pom 文件记录了依赖 B.jar,所以 Maven 会自动将 B.jar 加入项目依赖。有一点要特别说明,mvn package 生成的 .jar 与使用 IDEA 等工具(或 jar 命令)生成的 .jar,两者稍有区别:Maven 生成的 .jar 并不包含它所依赖的 .jar,IDEA 生成的 .jar 包含它所依赖的 .jar 或对这些 .jar 的引用,如下图所示: 使用 Maven 的 shade 插件也可以使生成可编译 jar,详见:Maven 从安装到使用 - 知乎 (zhihu.com)。 当项目比较大时,可能光直接依赖的 jar 包就有很多个。这时可以创建一个空 .jar,给这个空 jar 添加很多依赖,然后我们直接依赖这个空 jar 就可以了。spring-boot-starter-x.x.x.jar 就是一个空 jar,里面只有一个 META-INF 文件夹,没有任何 .class 文件。(也可以称为父项目) 环境变量java 命令行有一个总的环境变量:JAVA_TOOL_OPTIONS。 推荐新建这个环境变量,并将它的值设为:-Dfile.encoding=UTF-8 -Duser.language=en。其中: -Dfile.encoding=UTF-8 用于告知 jdk,源码的编码格式是 UTF-8;-Duser.language=en 用于将语言设置为英文。(设置为英文可以一劳永逸的解决全部乱码问题)1. java 命令设置系统变量要加前缀 -D,格式:java -Dproperty=value 。 2. java 的选项分为三类,一类是标准选项,所有 JVM 都支持,如版本号、类路径等;一类是额外选项,仅 Oracle 的 HotSpot JVM 支持,这类选项前面要加一个 -X;还有一类是高级选项,如 Garbage Collection (GC) ,这类选项前面要加一个 -XX。 3. 查看所有系统变量:java -XshowSettings。设置了 JAVA_TOOL_OPTIONS 后,每次执行命令,都会有如下提示: Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Duser.language=en另外,IDEA 不建议设置该环境变量,如下图所示。可以忽略该警告,因为我们只设置了 file.encoding 和 user.language,是不会影响性能和稳定性的: 另外,java 命令和 javac 命令也有仅供自己使用的环境变量,分别是 JDK_JAVA_OPTIONS 和JDK_JAVAC_OPTIONS。 java | oracle.com javac | oracle.com |
CopyRight 2018-2019 实验室设备网 版权所有 |