この問題については、インターネット上でさまざまな意見があります。個人的な理解とネット上の意見に基づいて、他の人の利便性を考慮して瓶パッケージとしてパッケージ化されています。 Java プログラムを実行している場合は、実行する main メソッドを含むクラスを探す必要はありません。サードパーティの jar パッケージを使用している場合は、大量のファイルをコピーするのではなく、jar パッケージを自分のプロジェクトに直接インポートします。クラスファイル。 war パッケージのビルドは、実際の運用環境で選択される Web アプリケーションのデプロイメント方法であり、ネット上では、この方法ではフォルダーを直接コピーする場合のようにファイルの損失が発生せず、空のフォルダーの削除など、サーバーがアプリケーションを最適化すると言われています。上記は情報提供のみを目的としています。
ローカル環境は Windows 10、jdk 1.8
jar または war の作成に同じツール jdk/ が使用されますパッケージ bin/jar.exe
|-----------------スキップしても構いません。パッケージングを理解しやすくするため 注意事項-----------------|
プロジェクトの紹介
データベース テーブル構造とテーブル作成ステートメント
CREATE TABLE `customer` ( `cust_id` int(11) NOT NULL AUTO_INCREMENT, `cust_name` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `cust_address` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cust_city` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cust_state` char(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cust_zip` char(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cust_country` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cust_contact` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `cust_email` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`cust_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 10006 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; INSERT INTO `customer` VALUES (10001, 'Coyote Inc.', '200 Maple Lane', 'Detroit', 'MI', '44444', 'china', 'Y Lee', 'ylee@coyote.com'); INSERT INTO `customer` VALUES (10002, 'Mouse House', '333 Fromage Lane', 'Columbus', 'OH', '43333', '', 'Jerry Mouse', NULL); INSERT INTO `customer` VALUES (10003, 'Wascals', '1 Sunny Place', 'Muncie', 'IN', '42222', 'USA', 'Jim Jones', 'rabbit@wascally.com'); INSERT INTO `customer` VALUES (10004, 'Yosemite Place', '829 Riverside Drive', 'Phoenix', 'AZ', '88888', 'UK', 'Y Sam', 'sam@yosemite.com'); INSERT INTO `customer` VALUES (10005, 'gzn or 1=1', '4545 53rd Street', 'Chicago', 'IL', '54545', '', 'E Fudd', NULL);
プロジェクト構造
app.java
package com.gzn.demo; import java.sql.*; import java.util.Scanner; /** * @author: gzn * @date: 2019/4/13 10:53 */ public class App { public static void main(String[] args) { int count = Integer.valueOf(args[0]); System.out.println("请输入要查询用户的条数?(0到5之间):"); Scanner sc = new Scanner(System.in); int count = sc.nextInt(); String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/corejava"; String username = "root"; String password = "root"; String sql = "select cust_id, cust_name, cust_address, cust_city from customer limit 0, ? "; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url, username, password); PreparedStatement pstat = conn.prepareStatement(sql); pstat.setInt(1, count); ResultSet rs = pstat.executeQuery(); while(rs.next()) { System.out.println("cust_id:" + rs.getObject("cust_id").toString()); System.out.println("cust_name: " + rs.getObject("cust_name").toString()); System.out.println("cust_address: " + rs.getObject("cust_address").toString()); System.out.println("cust_city:" + rs.getObject("cust_city").toString()); System.out.println("----------------------" +"\n"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }
|------ ----- -------------------------------------- ----- -----|
(1) cmd を使用して、次のパスを見つけます。プロジェクトのコンパイル出力
(2) コマンド jar -cvf helloworld.jar .
-c (作成、作成時にファイルを作成) テーブル
-v (冗長、長文、詳細) 圧縮の詳細をコンソールに表示します
-f (ファイル名) 圧縮ファイル名を指定します
helloworld.jar ファイル名はカスタマイズ可能 定義
helloworld ディレクトリ内のすべてのファイルを指します。ここには必ず「.」を記述してください。記述しないとエラーが発生する可能性があります。 (補足、# アスタリスクも可)
これまでのところ、パッケージ化は成功していますが、実行できません。これを機能させたい場合は、helloword.jar 内の MANIFEST.MF ファイルを変更する必要があります。
(3) 解凍ツールを使用して helloword.jar を開き、META-INF/MANIFEST.MF を編集して属性を追加します。
MANIFEST.MF 初期状態
Manifest-Version: 1.0 Created-By: 1.8.0_161 (Oracle Corporation)
属性を追加します: ( コロンは英語のコロンであり、コロンの後にスペースがあることに注意してください )
Main-Class: メイン メソッドを含むクラス
Class-Path: 依存する jar パッケージのパス。複数の jar パッケージに依存する場合は、スペースを使用してそれらを区切ります。
パス: 相対パス、helloworld を基準とした jar パッケージのパス.jar ファイル
絶対パス。jar パッケージはオペレーティング システム内にあります。 パス
一般的に使用される相対パス。依存する jar パッケージと独自の jar パッケージを同じディレクトリに配置します。これにより、クラスパスは、依存するjarパッケージの名前。
属性追加後のステータス:
Manifest-Version: 1.0 Created-By: 1.8.0_161 (Oracle Corporation) Class-Path: mysql-connector-java-5.1.18.jar Main-Class: com.gzn.demo.App
(4) テストの実行
依存関係を helloworld.jar と同じレベルのディレクトリにコピーし、 java -jar helloworld.jar を使用します。プログラムを実行します。
jar パッケージが他の開発者による使用のみを目的としており、実行する必要がない場合は、ステップ (2) に進みます。
##Main Class: メイン メソッドが含まれますクラス;
extract to the target JAR: ターゲット jar を抽出します。このオプションでは、依存する jar の絶対パスを設定する必要があります。
出力ディレクトリにコピーし、マニフェスト経由でリンク: 依存する jar を出力ディレクトリ、つまりプロジェクトにパッケージ化された jar と同じレベルにコピーします。このようにして、IDEA は MENIFEST.MF の Class-Path 属性の相対パスを直接構成できます。
首先进入jar包输入路径C:\Users\gzn\Desktop\helloworld\out\artifacts\HelloWorld_jar;
运行 java -jar helloworld.jar;
comment是我的一个已将编译好的web项目,使用cmd进入comment目录下执行命令
jar -cvf comment.war .
注意在项目目录下执行命令, “.” 表示对项目目录下的所有文件进行打包,将打包好的项目复制到Tomcat/webapps目录下,启动Tomcat服务器,就可以进行测试了。
以上がJava または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。