使用javac命令编译JavaSE项目笔记

目录

一、新建项目

二、编写一个HelloWorld

1、编写代码

2、编译

3、运行HelloWorld

三、编写一个可执行命令行程序

1、在src中新建目录

2、使用文本编辑器编写代码

3、编译

4、运行

5、打包

四、编写一个引用第三方Jar包的可执行命令行程序

1、新建一个项目

2、编写代码

3、编译

4、运行

5、打包


日常编写Java程序都是使用IDE来编码,IDE的功能极大的方便了程序的开发。相比之下使用记事本+javac的方式去编写程序,会显得及其不便。但是,由于各类考试中会遇到手写代码的情况,可能会涉及到比较这块内容;工作中也有可能遇到服务器环境上调试代码得情况,所以专门在这里记录一下。有时间的话,还需要学习一下ANT工具。

一、新建项目

新建src用于编写源代码

新建bin用于输出编译的文件,执行时也是在bin目录下。

二、编写一个HelloWorld

1、编写代码

这里先用记事本编写一个java源文件保存至src目录

2、编译

cmd命令进入HelloWorld目录,

输入javac src/HelloWorld.java -d bin/,回车,如无报错则说明编译成功。

此时jdk会在bin目录下生成一个HelloWorld.class的字节码文件

3、运行HelloWorld

cmd进入bin目录,输入java HelloWorld,回车,HelloWorld即被执行。

三、编写一个可执行命令行程序

目标:通过java实现与Windows的dir命令类似的可执行程序。

1、在src中新建目录

md com/myself

相当于在IDE中新建package

2、使用文本编辑器编写代码

 这里代码不是重点,重点是了解javac命令如何使用,所以尽可能使代码量少一些。

代码如下:

题外话:用记事本写代码还是挺考验对Java知识掌握程度的,不用IDE编程还是挺难的。

DirCommand接口

package com.myself;

import java.io.File;

public interface DirCommand{
		
	public void GetFileList();
	
}

 DirCommandImpl实现DirCommand接口

package com.myself;

import java.io.File;
import java.text.SimpleDateFormat;

public class DirCommandImpl extends File implements DirCommand{

	public DirCommandImpl(String filepath){
		super(filepath);
	}
	
	public void GetFileList(){
		File[] dest = super.listFiles();
		int filecount = 0;
		int dircount = 0;
		long filesize = 0;
		for(File file : dest){
			if (file.isFile()){
				filecount = filecount + 1;
				filesize = filesize + file.length();
			} else if(file.isDirectory()){
				dircount = dircount + 1;
			}
			Long lastModifiedTime = file.lastModified();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			System.out.println(sdf.format(lastModifiedTime) + " " + file.length()+" " + file.getName());
		}
		System.out.println("\r\n"+filecount + "个文件 " +filesize+"字节");
		System.out.println(dircount + "个目录 " +super.getFreeSpace()+"可用字节");

	}
	
}

Main可执行类

package com.myself;

public class Main {
	
	public static void main(String args[]){
		DirCommand dir = null;
		//目标路径作为参数从调用程序接收,不输入则默认为程序执行路径
		if(args.length == 0){
			String syspath = System.getProperty("user.dir");
			dir = new DirCommandImpl(syspath);
		}else if(args.length > 0){
			dir = new DirCommandImpl(args[0]);
		}else{
		    return;
		}
		dir.GetFileList();
	}
	
}

3、编译

在Helloworld路径下,cmd输入javac src\com\myself\*.java -d bin\ -encoding utf-8

这里使用了通配符来表示java源文件,也可以指定文件名

javac DirCommand.java DirCommandImpl.java Main.java -d bin\ -encoding utf-8

-d 是指定字节码文件的输出路径

-encoding是指定文件编码。由于以上三个java文件是在Notepad++中编写,默认UTF-8编码,而cmd默认是GBK编码,所以需要这样写来避免字符导致的编译错误、

无报错,则说明 编译成功。

编译结果为:

4、运行

 cmd进入bin目录下,输入java com.myself.Main

回车,得到如下结果

5、打包

bin目录下。cmd输入jar -cvf Dir.jar com\

将com包里面的内容都打包到bin目录下的Dir.jar中。

此时的jar包目录是 

 在META-INF中的MANIFEST.MF中添加一句Main-Class: com.myself.Main

Manifest-Version: 1.0
Created-By: 1.7.0_79 (Oracle Corporation)
Main-Class: com.myself.Main

 jar包就是可执行jar包了。

在bin目录下输入java -jar Dir.jar即可执行。

四、编写一个引用第三方Jar包的可执行命令行程序

目标:将以上生成的Dir.jar作为第三方jar包,在主方法中引用com.myself.Main,mian()来实现与上述功能相同的jar包。引用其他第三方jar包可能涉及到比较复杂的配置过程,所以这里是为了引用第三方jar包而引用,仅供练习。

1、新建一个项目

项目结构

2、编写代码

 TestDirJar.java

package com;

import com.myself.Main;
 
public class TestDirJar{
	
	public static void main(String args[]){
		System.out.println("TestDirJar 调用了 Main 主方法。");
		Main.main(args); 
	}
}

3、编译

在Helloworld2目录下输入javac -cp .;lib\Dir.jar src\com\TestDirJar.java -d bin\ -encoding utf-8

无报错则说明编译成功

-cp 指定jar包位置。‘.;'必须写上,代表源文件根目录。

4、运行

在bin目录下:输入java -cp .;..\lib\Dir.jar com.TestDirJar

 

5、打包

新建一个目录hello作为jar包路径

jar -cvf E:\Hello\TestDir.jar com\

将lib目录复制到hello根目录,形成如下结构;

 修改MANIFEST.MF如下:

Manifest-Version: 1.0
Created-By: 1.7.0_79 (Oracle Corporation)
Main-Class: com.TestDirJar
Class-Path: lib\Dir.jar

在hello目录下输入java -jar TestDir

 运行结果同上;

 感想:使用javac命令来编译Java程序,使用文本编辑器写Java代码,还是很难的。日常开发工作环境下,一定是要用IDE来开发的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值