第一天,命令行下引用jar包

时间:2021-06-08 17:42:37

我们使用IDE工具来编写java程序的时候(例如eclipse),可以直接引用同package里面的类(非private类型的类),不同package的类则需要通过import来引入它,或则引入jar包来引用。
我们在命令下的时候,其中一个类需要引用另外一个类的时候,就需要通过jar包来引用了。 其中两个类的代码如下(两个类在不同的目录下面):

public class Person{
public static void main(String[] args){
Dog dog = new Dog();
}
}
public class Dog{
public static void run(){
System.out.println("run");
}
public static void main(){
run();
}
}

当我们编译Person.java时候,则会出现如下提示:
第一天,命令行下引用jar包
此时就要通过jar包来引用Dog类了。
先,现将Dog类打包,在命令行中输入: jar cvf Dog.jar Dog.class
就可以得到相应的Dog类jar包。
同时也可以看一下jar的用法:
第一天,命令行下引用jar包
得到了jar包,就可以在编译和运行Person 类的时候引用它了,在命令行下输入:javac -cp .;Dog.jar Person.java
(–cp <目录和 zip/jar 文件的类搜索路径>)
就可以看到Person类正常地编译及运行了。

时我们也可以看一下,命令行下运行需要调用数据库的java程序。

import java.sql.*;
public class MysqlTest{
/**
*功能是:获取一个数据库的链接,并且还回它。
**/

public static Connection getConnect(){
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver");

/*DriverManager.getConnection(url,root,passWord)是要按照自己的数据库的database的命名,用户名和密码来设置的。*/

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","passWord");
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
public static void main(String[] args){
getConnect();
}
}

编译和运行MysqlTes类,我们可以看到:
第一天,命令行下引用jar包

遇到一个ClassNotFoundExecption,很明显我们可以代码中可以看出,这个Exception来自Class.forName()语句。是因为没有调用链接数据的jar包的导致的。
样的,我们用-cp命令调用jar包,运行一下。
在命令行下输入:java -cp .;mysql-connector-java-5.1.40-bin.jar MysqlTst

就会看到,MysqlTest正常的运行结束了。