ZT:https://blog.csdn.net/just3do/article/details/68957618
時には、小さなテストを書き、私は、アイデアを開くためにcmderを使用することではなく、コピー他の誰かのブログをコンパイル何歳忘れたくありません。
コマンドラインオプション-classpathのjavacとjavaの
これは非常に基本的な質問ですが、基本的にはJavaのIDEツールを開発するために、既存のプログラムを使用しているため、その少数の人々がそれを実現しています。
javac
-classpathは、クラスを検索するパスを設定し、(クラスファイルです)、ディレクトリ、jarファイル、zipファイル内のCLASSPATH内のすべての設定が上書きされますすることができます。
-sourcepath、Javaファイルをコンパイルするために必要な検索パスを設定するには、(javaファイルです)、ディレクトリ、jarファイル、zipファイルすることができます。
だから、完全なjavacコマンドラインは、次のようになります。
パスcにそのabc.javaを仮定:内部SRC \、コンパイルする任意のディレクトリで次のコマンドを実行することができます。
javacの-classpath C:\クラス; C :\ jarファイル\ abc.jar; C:\ジップ\ abc.zip -sourcepath C:\ソースの\ project1にするの\ SRC; C:\ソース\ののProject2 \ libに\あるsrc.jar; C :\ソース\のプロジェクト3 \ libに\ src.zip C:\ SRC \ abc.javaは
\分類以下のクラスファイルを、C:\ jarファイル\ abc.jarクラスファイル内、C:\ジップ\ ABC Cをコンパイルする必要性を表明しました.zipファイルのクラス内で
もCに必要な次のソースファイルSRC \ソースの\ project1には\、C:\ソース\ののProject2 \ libに\あるsrc.jar ソースファイル内、C:\ソース\のプロジェクト3 \ libに\ src.zip ソースファイル、内部の
ノート:jarファイル、ソースファイル内のzipが再コンパイルされる可能性がある、ディレクトリ内のソースファイルへの変更はできません。
ジャワ
-classpath、クラスを検索するパスを設定し、(クラスファイルです)、ディレクトリ、jarファイル、zipファイルすることができ、全てのCLASSPATHの設定を上書きします。
クラスの一部がクラスを検索するために実行されるので、このクラスは、このパスを取る必要があり、また内側に-classpath設けられています。
そこに実行されるクラスパスでJavaの実装では明らかに、我々は、ドットを追加する必要があります(。)このカタログ検索に示されています。
パスc abc.class仮定する:SRC \
任意の順序次のパスで実行することができる
Javaの-classpath C:\クラス; C:\ JARの\のabc.jar; C:\の郵便\のabc.zip; C:\ SRC ABC
質問:main.classはCに属している場合:\ジャーの\ abc.jar、このパッケージ、Javaの-classpath cの後、実装をcom.cnblogs.jeffchen:\クラスをし、c :\ jarファイル\ abc.jar; C:\ジップ\ abc.zip; com.cnblogs.jeffchen.mainことができますが、クラスパスには、複数のjarバッグが含まれている場合は?そして、他のjarパッケージには、何が起こるかcom.cnblogs.jeffchen?間違いましたか?
Windowsでは、
バックスラッシュ\のファイルパス分割
クラスのJavaファイルまたはリスト区切りセミコロン、
Linuxの中に
セパレータビットファイルパス/スラッシュ
クラスのJavaファイルリストまたは結腸デリミタ:
例は、コンパイルおよびLinuxを実行します
/ usr / local / javaの/ binに/ javacの-classpath /tmp/javatest/lib/mail-1.3.3.jar -d / tmpに/ javatest / binに/を/ tmp / javatest / SRC / JP / CO / realseed /能力。ジャワ
/ usr / local / javaの/ binに/ javaの-classpath /tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability
-------------------------------------------------- ---------------
今日は書いたテストパッケージ名を指定してプログラムを、さらにはコンパイルして実行するので、今それを書き留めする方法を忘れてしまいました
1パッケージでプログラムをコンパイルして実行
- パッケージの テスト;
- パブリッククラス HiveJdbcClient {
- パブリック静的ボイド メイン(文字列[]引数){
- System.out.println("-------------------" );
- }
- }
パッケージ名を持つプログラムは、コンパイラが使用する必要があります
- javacは-d。HiveJdbcClient.java
ここでは、現在のディレクトリにtestディレクトリを生成するHiveJdbcClient.classファイルである、となります
コマンドを実行している場合:
- javaのtest.HiveJdbcClient
結果:
- -------------------
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;
- // import org.apache.hive.jdbc.HiveDriver;
- 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 \ハイブ- 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 \ハイブ-JDBC- 0.13 。1 -cdh5。2.1 test.HiveJdbcClientの.jar
それはそれです
-d(点):それは、ファイルのディレクトリを打つクラスを表します