Maison >Java >javaDidacticiel >Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR
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.
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
| -------------------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
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
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) Utilisez cmd pour trouver le chemin de sortie de la compilation du projet
(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)
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.
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.
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.
首先进入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服务器,就可以进行测试了。
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!