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:\jtest\oo>ls OracleTest.java E:\jtest\oo>cd .. E:\jtest> javac -cp .\ojdbc14-10.2.0.4.0.jar oo\OracleTest.java E:\jtest> java -cp .;.\ojdbc14-10.2.0.4.0.jar oo.OracleTest 1