Maison  >  Article  >  Java  >  Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

WBOY
WBOYavant
2023-05-07 10:25:172003parcourir

    1. Pourquoi emballer

    Il existe différentes opinions sur cette question sur Internet. Basé sur une compréhension personnelle et des opinions en ligne, il est présenté sous forme de pot pour la commodité des autres. Si vous exécutez un programme Java, vous n'avez pas besoin de rechercher la classe contenant la méthode principale à exécuter ; si vous utilisez un package jar tiers, importez le package jar directement dans votre propre projet au lieu de copier un tas de fichiers. fichiers de classe. Construire un package war est la méthode de déploiement d'applications Web choisie dans les environnements de production réels. On dit en ligne que cette méthode n'entraînera pas de perte de fichiers comme la copie directe de dossiers, et que le serveur optimisera l'application, comme la suppression de dossiers vides, etc. Ce qui précède est uniquement à titre informatif.

    2. Comment empaqueter

    L'environnement local est Windows 10, jdk 1.8

    Le même outil est utilisé pour créer un package jar ou war jdk/bin/jar.exe

    1 Créer un package jar

    .

    | -------------------Vous pouvez l'ignorer, juste pour comprendre les choses auxquelles vous devez faire attention lors de l'emballage--------- --------|

    Introduction au projet

    Structure de la table de base de données et ses instructions de création de table

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou 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);

    Structure du projet

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou 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, utilisez jar pour empaqueter manuellement

    (1) Utilisez cmd pour trouver le chemin de sortie de la compilation du projet

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    (2) Exécutez la commande dans ce répertoirejar -cvf helloworld.jar .

    -c (créer, créer) un fichier lors de la création d'une table
    -v (verbeux, long, détaillé) Imprimer les détails de la compression sur la console
    -f (nom du fichier) spécifie le fichier compressé nom du fichier
    helloworld.jar Le nom du fichier peut être personnalisé
    Indique tous les fichiers du répertoire helloworld. Assurez-vous d'écrire "." (En supplément, *les astérisques sont également acceptables)

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Jusqu'à présent, l'emballage est réussi, mais il ne peut pas être exécuté. Si vous voulez que cela fonctionne, vous devez modifier le fichier MANIFEST.MF dans helloword.jar.

    (3) Utilisez l'outil de décompression pour ouvrir helloword.jar et modifier META-INF/MANIFEST.MF pour ajouter des attributs

    État initial de MANIFEST.MF

    Manifest-Version: 1.0
    Created-By: 1.8.0_161 (Oracle Corporation)

    Ajouter des attributs : (Notez que les deux points sont un deux-points anglais et il y a un espace après les deux points )

    Main-Class : La classe contenant la méthode principale
    Class-Path : Le chemin du package jar dépendant S'il dépend de plusieurs packages jar, utilisez des espaces pour séparer. Chemin : chemin relatif, le package jar est relatif au chemin du fichier helloworld.jar
    Chemin absolu, le chemin du package jar dans le système d'exploitation
    Chemins relatifs couramment utilisés, placez le package jar dépendant et votre propre package jar. dans le répertoire de même niveau, de sorte que Class-Path écrive directement le package jar dépendant Just name.

    Statut après l'ajout d'attributs :

    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) Exécutez le test

    Copiez les dépendances dans le même répertoire que helloworld.jar et utilisez java -jar helloworld.jar pour exécuter le programme.

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Si le package jar est uniquement destiné à être utilisé par d'autres développeurs et n'a pas besoin d'être exécuté, passez à l'étape (2).

    1. 2. Utiliser IDEA pour l'empaquetage

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Main Class : la classe contenant la méthode principale
    extraire vers le JAR cible : extraire le pot cible, cette option nécessite que vous soyez ; le pot dépendant Configurez le chemin absolu.
    copier dans le répertoire de sortie et créer un lien via le manifeste : copiez le pot dépendant dans le répertoire de sortie, qui est le répertoire de même niveau que le pot empaqueté par votre projet. De cette manière, IDEA peut configurer directement le chemin relatif de l'attribut Class-Path dans MENIFEST.MF.

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    Répertoire de sortie : chemin de sortie emballé.

    Faire le test :

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

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR

    2、打成war包

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

    jar -cvf comment.war .

    Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR
    注意在项目目录下执行命令, “.” 表示对项目目录下的所有文件进行打包,将打包好的项目复制到Tomcat/webapps目录下,启动Tomcat服务器,就可以进行测试了。

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer