


Comment empaqueter un projet Java ou Java Web dans un package JAR ou WAR
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
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.1, utilisez jar pour empaqueter manuellement
(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
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;
2、打成war包
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
