ホームページ  >  記事  >  Java  >  Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

WBOY
WBOY転載
2023-05-07 10:25:171951ブラウズ

    1. パッケージ化する理由

    この問題については、インターネット上でさまざまな意見があります。個人的な理解とネット上の意見に基づいて、他の人の利便性を考慮して瓶パッケージとしてパッケージ化されています。 Java プログラムを実行している場合は、実行する main メソッドを含むクラスを探す必要はありません。サードパーティの jar パッケージを使用している場合は、大量のファイルをコピーするのではなく、jar パッケージを自分のプロジェクトに直接インポートします。クラスファイル。 war パッケージのビルドは、実際の運用環境で選択される Web アプリケーションのデプロイメント方法であり、ネット上では、この方法ではフォルダーを直接コピーする場合のようにファイルの損失が発生せず、空のフォルダーの削除など、サーバーがアプリケーションを最適化すると言われています。上記は情報提供のみを目的としています。

    2. パッケージ化方法

    ローカル環境は Windows 10、jdk 1.8

    jar または war の作成に同じツール jdk/ が使用されますパッケージ bin/jar.exe

    1.jar パッケージにパックします。パッケージ

    |-----------------スキップしても構いません。パッケージングを理解しやすくするため 注意事項-----------------|

    プロジェクトの紹介

    データベース テーブル構造とテーブル作成ステートメント

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    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);

    プロジェクト構造

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    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.1. jar を使用した手動パッケージング

    (1) cmd を使用して、次のパスを見つけます。プロジェクトのコンパイル出力

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    (2) コマンド jar -cvf helloworld.jar .

    を実行します。

    -c (作成、作成時にファイルを作成) テーブル
    -v (冗長、長文、詳細) 圧縮の詳細をコンソールに表示します
    -f (ファイル名) 圧縮ファイル名を指定します
    helloworld.jar ファイル名はカスタマイズ可能 定義
    helloworld ディレクトリ内のすべてのファイルを指します。ここには必ず「.」を記述してください。記述しないとエラーが発生する可能性があります。 (補足、# アスタリスクも可)

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    これまでのところ、パッケージ化は成功していますが、実行できません。これを機能させたい場合は、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 を使用します。プログラムを実行します。

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    jar パッケージが他の開発者による使用のみを目的としており、実行する必要がない場合は、ステップ (2) に進みます。

    1. 2. IDEA を使用してパッケージ化

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    ##Main Class: メイン メソッドが含まれますクラス;
    extract to the target JAR: ターゲット jar を抽出します。このオプションでは、依存する jar の絶対パスを設定する必要があります。
    出力ディレクトリにコピーし、マニフェスト経由でリンク: 依存する jar を出力ディレクトリ、つまりプロジェクトにパッケージ化された jar と同じレベルにコピーします。このようにして、IDEA は MENIFEST.MF の Class-Path 属性の相対パスを直接構成できます。

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    #出力ディレクトリ: パッケージ化された出力パス。

    テストを実行します:

    首先进入jar包输入路径C:\Users\gzn\Desktop\helloworld\out\artifacts\HelloWorld_jar;
    运行 java -jar helloworld.jar;

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法

    2、打成war包

    comment是我的一个已将编译好的web项目,使用cmd进入comment目录下执行命令

    jar -cvf comment.war .

    Java または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法
    注意在项目目录下执行命令, “.” 表示对项目目录下的所有文件进行打包,将打包好的项目复制到Tomcat/webapps目录下,启动Tomcat服务器,就可以进行测试了。

    以上がJava または Java Web プロジェクトを JAR パッケージまたは WAR パッケージにパッケージ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。