还是IDE习惯了,以至于忘记了如何手动构建编译Java程序。今天写一个Flag作为警醒,以后IDE可以用,也会经常用,但是也不能忘记其背后的核心原理。
- 默认包路径Java文件的编译执行:
public class Test{
public static void main(String[] args){
System.out.println("Hello World");
}
}
编译执行:
% javac Test.java
% java Test
- 带有引用关系的源码编译执行:
public class Demo{
public static void out(){
System.out.println("Hello World");
}
}
public class Test{
public static void main(String[] args){
Demo.out();
}
}
编译执行:
% javac Test.java Demo.java
% java Test
- 带有包路径的源码编译执行
package com.util.api;
public class Test{
public static void main(String[] args){
System.out.println("Hello World");
}
}
编译执行:
% javac -d . Test.java
% java com.util.api.Test
这里需要十分注意 带有包路径javac时,需要添加参数 -d 和 .,执行时需要添加包路径
- 带有输入参数源码的编译执行
public class BinaryDump {
public static void main(String[] args){
int BITS_PER_LINE = 16;
String fileName = "abra.txt";
if(args.length == 2){
BITS_PER_LINE = Integer.parseInt(args[0]);
fileName = args[0];
}
int count;
for(count = 0; !BinaryStdIn.isEmpty(); count ++){
if(BITS_PER_LINE == 0){ BinaryStdIn.readBoolean(); continue;}
else if(count != 0 && count % BITS_PER_LINE == 0) StdOut.println();
if(BinaryStdIn.readBoolean()) StdOut.print(1);
else StdOut.print(0);
}
if(BITS_PER_LINE != 0) StdOut.println();
StdOut.println(count + " bits");
}
}
编译执行:
% javac BinaryDump.java BinaryStdIn.java BinaryStdOut.java StdOut.java
% java BinaryDump 16 < file.txt
其中初始输入参数为 16, 其中 file.txt表示读入数据从控制台,重定向到file.txt文件