用命令行编译java文件

时间:2021-12-18 17:46:27

用惯了IDE,突然发现对于javajavac命令只会基础的单文件编译运行,因此特地研究了一下多文件依赖编译运行。(顺便一提,*真是个好地方)

环境:Java8 Windows10

单文件编译

带包名的java类编译

现在我们对 HelloWorld.java 做些小小的修改代码如下

package lib;

public class HelloWorld
{
	public static void main (String []args) {
		System.out.println ("Hello World!");
	}
}

这种情况,有两种方式:

第一种就是直接用 -d 参数编译。

编译命令  javac -d . HelloWorld.java  切记  .  代表当前目录左右空格不能丢。编译后编译器会帮我们在当前目录下自动生成一个lib文件夹,这和我们的包名一致。如果包名很长如: com.shark.test 编译器就会生成 ./com/shark/test 三级目录,在最里层即 test目录下就是我们的class文件。

运行命令 java lib.HelloWorld 运行时需带上完整包名+类名

用命令行编译java文件

第二种方式是手动创建一个 lib 文件夹将 HelloWorld.java 放进去,(这里的lib 取决于包名,若多层包名需创建多级目录)

编译命令:javac ./lib/HelloWorld.java 运行命令为:java lib.HelloWorld

用命令行编译java文件


引用第三方jar包的编译

在这里我引用的是mysql的jar包。代码如下

import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Driver;

public class Test
{
	private ResultSet rset;
	private static Driver driver;

	public static void main (String args [] )	 throws SQLException 
	{
		driver  = new Driver();
		System.out.println ("HelloWorld!!");
		System.out.println (driver);
	}
}

编译命令   javac -cp mysql-connector-java-5.1.7-bin.jar Test.java   

执行命令  java -Djava.ext.dirs=./ Test    或是   java -cp .;mysql-connector-java-5.1.7-bin.jar Test

用命令行编译java文件

有包名:

编译命令 : javac -d . -cp mysql-connector-java-5.1.7-bin.jar Test.java   

执行命令  java -Djava.ext.dirs=./ Test   

-cp 指定第三方jar包的位置

用命令行编译java文件

多文件编译

同级目录下


一下是准备工作,在当前目录下创建 HelloWorld.java 和 Main.java文件内容分别如下

public class HelloWorld
{
	public String getMsg ()
	{
		return "HelloWorld!";
	}
}

public class Main 
{
	public static void main (String []args)
	{
		HelloWorld hw = new HelloWorld ();
		System.out.println (hw.getMsg ());
	}
}
在cmd中查看目录如下:

用命令行编译java文件

同级目录下java和javac都可以自动识别,这里很简单,编译命令为   javac HelloWorld.java Main.java 运行命令为  java Main

用命令行编译java文件


非同级目录

当前目录下 Main.java

import lib.HelloWorld;

public class Main 
{
	public static void main (String []args)
	{
		HelloWorld hw = new HelloWorld ();
		System.out.println (hw.getMsg ());
	}
}

在当前目录下创建一个目录lib 并在lib下创建一个文件 HelloWorld.java

package lib;

public class HelloWorld
{
	public String getMsg ()
	{
		return "Hello World!";
	}
}
编译命令   javac Main.java ./lib/HelloWorld.java 运行命令为 java Main

用命令行编译java文件

多谢*的大佬,下面附上相关链接 
https://*.com/questions/13738343/import-class-file-in-java?rq=1
https://*.com/questions/44458126/use-javac-and-java-to-excute-class-file-with-extern-classes-under-other-director