jdk的java命令有些参数之前一直是模糊的,今天弄清晰了,记录一下!
首先说一下classpath 这个不但包含要依赖的包,而且还包含自己写了的类以及main类
window:
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
linux:
-classpath <目录和 zip/jar 文件的类搜索路径>
用 : 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
比如一个很常见的jdbc驱动测试(oracle),要依赖一个oracle驱动包
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 7 public class OracleTest { 8 9 private static String driver = "oracle.jdbc.driver.OracleDriver"; 10 private static String url = "jdbc:oracle:thin:@//192.168.1.20:1521/orcl2"; 11 private static String username = "satp"; 12 private static String password = "satp"; 13 14 private void query(String sql) { 15 try { 16 Class.forName(driver); 17 Connection conn = DriverManager.getConnection(url, username, password); 18 PreparedStatement pstmt = conn.prepareStatement(sql); 19 ResultSet rs = pstmt.executeQuery(); 20 while (rs.next()) { 21 int name = rs.getInt(1); 22 System.out.println(name); 23 } 24 rs.close(); 25 pstmt.close(); 26 } catch (ClassNotFoundException e) { 27 e.printStackTrace(); 28 } catch (SQLException e) { 29 e.printStackTrace(); 30 } 31 } 32 33 public static void main(String[] args) throws SQLException { 34 OracleTest t = new OracleTest(); 35 t.query("select 1 from dual"); 36 } 37 }
window10下测试:
1.javac编译
E:jtest>ls
OracleTest.java ojdbc14-10.2.0.4.0.jar
E:jtest> javac -cp .ojdbc14-10.2.0.4.0.jar OracleTest.java
2.java执行
### 第一次失败 没有将当前目录添加到cp里
E:jtest> java -cp .ojdbc14-10.2.0.4.0.jar OracleTest 错误: 找不到或无法加载主类 OracleTest
###第二次成功 E:jtest> java -cp .;.ojdbc14-10.2.0.4.0.jar OracleTest 1
带包编译测试
OracleTest.java添加上package oo;
###
jtest
--|ojdbc14-10.2.0.4.0.jar
--|oo
--|OracleTest.java
E:jtest>ls ojdbc14-10.2.0.4.0.jar oo E:jtest>cd oo E:jtestoo>ls OracleTest.java E:jtestoo>cd .. E:jtest> javac -cp .ojdbc14-10.2.0.4.0.jar ooOracleTest.java E:jtest> java -cp .;.ojdbc14-10.2.0.4.0.jar oo.OracleTest 1