转自:http://blog.csdn.net/czw698/article/details/44353453
要打jar包,一定要先javac编译,否则没有class文件。这样打出的jar包是不可用的。
今天写了个测试程序,带有包名,竟然忘记了怎么编译和运行,所以现在记下来
1 带包程序的编译与运行
package test; public class HiveJdbcClient { public static void main(String[] args) { System.out.println("-------------------" ); } }
程序中带有包名,编译应该使用
javac -d . HiveJdbcClient.java
这里在当前目录会生成一个 test目录,里面就是 HiveJdbcClient.class 文件
运行的时候命令:
运行结果:
2 对于需要依赖其他jar的运行
在实际的运行中,可能需要依赖额外的jar包,那么javac 和 Java 应该怎么做呢
使用 java -cp 指定依赖的jar包就可以。例子如下:
HiveJdbcClient.java
# package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class HiveJdbcClient { private static String driverName = "org.apache.hive.jdbc.HiveDriver" ; public boolean run() { try { Class.forName(driverName); Connection con = null ; con = DriverManager.getConnection( "jdbc:hive2://192.168.17.15:10000/hivedb" , "hiveuser" , "hiveuser" ); Statement stmt = con.createStatement(); ResultSet res = null ; String sql = "select count(*) from test_data" ; System.out.println("Running: " + sql); res = stmt.executeQuery(sql); System.out.println("ok" ); while (res.next()) { System.out.println(res.getString(1 )); } return true ; } catch (Exception e) { e.printStackTrace(); System.out.println("error" ); return false ; } } public static void main(String[] args) throws SQLException { HiveJdbcClient hiveJdbcClient = new HiveJdbcClient(); hiveJdbcClient.run(); } }
里面的代码里,我们依赖了Hive 的jdbc jar 包,在编译和运行时我们也要加上依赖的jar包,需要注意的是,使用 java -cp 有额外的jar的时候:在Linux 下面ClassPath前面是一个点号加一个冒号;在Windows下面ClassPath前面是一个点号加一个分号
javac -cp .;D:\ochadoop4. 0.1 \hive- 0.13 . 1 -cdh5. 2.1 -och4. 0.1 \user_lib\hive--jdbc- 0.13 . 1 -cdh5. 2.1 .jar HiveJdbcClient.java
运行命令:
java -cp .;D:\ochadoop4. 0.1 \hive- 0.13 . 1 -cdh5. 2.1 -och4. 0.1 \user_lib\hive-jdbc- 0.13 . 1 -cdh5. 2.1 .jar HiveJdbcClient
这样就可以了
如果我们把代码中的 package 注释打开(该文件又多了一个包) 那么,编译时使用:
javac -cp .;D:\ochadoop4. 0.1 \hive- 0.13 . 1 -cdh5. 2.1 -och4. 0.1 \user_lib\hive--jdbc- 0.13 . 1 -cdh5. 2.1 .jar -d . HiveJdbcClient.java
运行命令:
java -cp .;D:\ochadoop4. 0.1 \hive- 0.13 . 1 -cdh5. 2.1 -och4. 0.1 \user_lib\hive-jdbc- 0.13 . 1 -cdh5. 2.1 .jar test.HiveJdbcClient
这样就可以了
-d .(点) :代表的是把class 文件打到哪个目录里