Java基础 - javac命令详解(1) 编译基本java项目
1.为什么要搞定 javac 命令
1.
javac
是java中的编译源代码的命令工具,将.java文件编译成 .class 文件;
2.由于当下为了提高开发效率,大多数的开发工作都在 java的
集成开发环境
中进行,因此,也就很少有机会直接使用javac命令来编译我们的代码;
本文就对javac命令的使用场景进行一个较为系统的论述。
希望本文能够帮助到广大的 java coder!
2.javac 命令使用的两个场景
2.0 javac 语法介绍
1. javac 源文件 :直接编译源文件,并将编译后的.class文件放到与源文件统一目录下;2. javac 源文件 -d 编译文件输出路径 : 编译源文件,并将编译后的 .class 文件 放到 -d 参数后的目标路径中;3. javac 源文件 -d 编译文件输出路径 -encoding utf-8 : 编译文件, 并将编译后的.class文件放到 -d参数后的目标路径中,且指定编码格式 为utf-8,解决运行时中文乱码问题。4.javac @sourcesList_file -d 编译我呢见输出路径 -encoding utf-8 :4.1 @soucesList_file : 文件中可以写多个java源文件,这种方式适合编译较大型的java项目,4.2 每一个java源文件之间用回车符进行分割;4.3 存在多级目录的,在windows下使用`\` ,在linux 下使用 '/' : windows : 'src\com\northcastle\xxx.java'linux : 'src/com/northcastle/xxx.java'
2.1 单文件的编译
2.1.0 项目准备
新建一个目录,用于存放我们的项目:
目录结构如下:javac01| -- src : 源码目录| -- Javac01.java : 源文件| -- target : 编译后的文件位置| -- Javac01.class : 编译后的文件
2.1.1 java文件内容
》 Javac01.java 文件内容如下:
public class Javac01{public static void main(String[] args) {System.out.println("Hello Javac01");System.out.println("你好 Javac01");}
}
2.1.2 执行编译
打开命令行窗口,进入到 javac01 文件夹下面;
执行 如下命令 :javac src\Javac01.java -d target -encoding utf-8
【这里因为是在windows下,所以注意一下 斜杠 的写法】
【实际上 / 和 \ 这两种斜杠都可以!】
如果没有报错,则执行成功,去target 目录下查看,会生成Javac01.class
文件。
2.1.3 运行程序
进入到 target 目录中,使用
java
命令来执行程序。
2.2 存在包结构的java项目编译
2.2.0 项目准备
新建一个目录,用于存放我们的项目:
目录结构如下:javac02| -- src : 源码目录| -- com| -- northcastle| -- Javac02A.java| -- Javac02B.java | -- utile| -- JavaUtile.java| -- target : 编译后的文件位置| -- com| -- northcastle| -- Javac02A.class | -- Javac02B.class
2.2.1 java文件内容
》 Javac02A.java
package com.northcastle; // 指定包名public class Javac02A{public void sayHello(){System.out.println("Hello Javac02A");System.out.println("你好 Javac02A");}
}
》 Javac02B.java
package com.northcastle; // 指定包名import com.northcastle.Javac02A; // 引入依赖的类public class Javac02B{public static void main(String[] args) {// 创建Javac02A对象,并调用方法Javac02A javac02A = new Javac02A();javac02A.sayHello();}
}
》 JavaUtile.java
package com.utile; // 指定包名public class JavaUtile{public static void isEmpty(){System.out.println("恭喜你调用成功了这个isEmpty工具方法!");}
}
2.2.2 执行编译
2.2.2.1 编译方式一 : 分目录编译
打开命令行窗口,进入到 javac02 文件夹下面;
执行 如下命令 :
javac src\com\northcastle\*.java -d target -encoding utf-8
;
javac src\com\utile\*.java -d target -encoding utf-8
.
【*.java
表示 编译对应目录下面所有的java源文件】
如果没有报错,则执行成功,去target 目录下查看,会在对应的目录下生成对应的.class文件。
2.2.2.2 编译方式二 : 编写一个要编译的清单文件
当一个java项目中的源文件较多时,可以把源文件放到一个文件中列出来,
在执行javac 命令时,使用 @fileName 指定列表文件来进行编译。
打开命令行窗口,进入到 javac02 文件夹下面;
执行如下命令 :
javac @javaList.txt -d target -encoding utf-8
【javaList.txt 是列出要编译的java文件列表的文件,各个java源文件之间用回车符进行分割】
如果没有报错,则执行成功,去target 目录下查看,会在对应的目录下生成对应的.class文件。
》 javaList.txt 文件中的内容
src\com\northcastle\Javac02A.java
src\com\northcastle\Javac02B.java
src\com\utile\JavaUtile.java
2.2.3 运行程序
执行有包名的java程序,需要进行带上包名执行
java
命令
3.完成
Congratulations!
You are one step closer to success!
Java基础 - javac命令详解(1) 编译基本java项目相关推荐
- JAVAC 命令详解 -d表示目录
JAVAC 命令详解 结构 javac [ options ] [ sourcefiles ] [ @files ] 参数可按任意次序排列. options 命令行选项. sourcefiles 一个 ...
- Java基础:volatile详解
Java基础:volatile详解 1.volatile保证可见性 1.1.什么是JMM模型? 1.2.volatile保证可见性的代码验证 1.2.1.无可见性代码验证 1.2.1.volatile ...
- VCS命令详解(一):编译命令
VCS仿真命令详解 编译时候的命令(按字母排序) A B C D E F G H I J L M N O P Q R S T U V W Y 本文中所有命令基于VCS2014版 编译时候的命令(按字母 ...
- java执行cmd命令详解
前言 Java应用程序主要是通过Runtime和Process两个类来执行cmd命令. Runtime.exec方法创建本机进程并返回Process子类的实例,该实例可用于控制进程并获取有关它的信息. ...
- java 8 新功能详解_Java 8和Java 14之间的新功能
java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...
- Java版人脸检测详解下篇:开发java应用并做成docker镜像
本篇概览 如果您看过<Java版人脸检测上篇>一文,甚至动手实际操作过,那么你应该会对背后的技术细节感兴趣,开发这样一个应用,咱们总共要做以下三件事: 1.准备好docker基础镜像 2. ...
- [读书笔记]java基础与案例详解 主编徐明华
Java SE(标准版),SUN平台体系中最基础最底层的版本,它是各种应用平台的基础. Java SE包含了桌面应用API和Java EE企业级与Java ME嵌入式. Java是一种计算机编程语言: ...
- JAVAC 命令详解
转自:http://jeffchen.iteye.com/blog/395671 结构 javac [ options ] [ sourcefiles ] [ @files ] 参数可按任意次序排列. ...
- java $p_javap -c命令详解
一直在学习Java,碰到了很多问题,碰到了很多关于i++和++i的难题,以及最经典的String str = "abc" 共创建了几个对象的疑难杂症. 知道有一日知道了java的反 ...
最新文章
- 成功解决 绘图时行坐标名或列坐标名出现f0、f1、f2、f3、f4、f5(或者Column_0、Column_1、Column_2、Column_3)等命名而不是想要的具体对应字段命名
- smarty调试方法
- RSA key format is not supported
- leetcode 91. 解码方法(dp)
- 【华为云技术分享】Sketch插件技术 — 让研发和设计高效协同
- 基于JAVA+SpringMVC+Mybatis+MYSQL的建筑项目管理系统
- 自学前端不用慌张!零基础自学前端必备手册,学成月薪12K
- vue2.0中transition组件的用法
- 【业务建模_5】数据分析师技能梳理
- Ubuntu 配置Samba 服务器
- python语言开发环境搭建_Python开发环境搭建-Go语言中文社区
- Android 文件存放路径
- Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)
- pantum打印机驱动安装m6506_奔图PantumM6506驱动程序官方版
- 舒尔特 Pro ,专业训练注意力专注力
- PAT 甲级 1014. Waiting in Line
- [C++] 栈的压入、弹出序列
- 目前住院病人主要由护士护理这样做不仅需要大量护士而且由子不能随时观察危重病人的病情变化还可能会延误抢救时机.某医院打算开发-个以计算机为中心的患者监护系统试写出问题定义并且分析开发这个系统的可行性.
- 程序人生:扒一扒程序员为什么总在加班?拿生命敲代码?
- 网易云动态小视频下载方法