用命令行编译java文件

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

环境: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 运行时需带上完整包名+类名


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

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



引用第三方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


有包名:

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

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

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


多文件编译

同级目录下


一下是准备工作,在当前目录下创建 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和javac都可以自动识别,这里很简单,编译命令为   javac HelloWorld.java Main.java 运行命令为  java Main



非同级目录

当前目录下 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



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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值