[Java] [Microsoft] Éléments à prendre en compte lors de l'inclusion du pilote JDBC SQL Server dans un fichier jar

Première étape

Plugin Maven Shade C'est pratique. Vous pouvez démarrer le programme avec un seul fichier jar sans écrire un long chemin de classe.

Cela s'est produit lorsque j'ai essayé de mettre le pilote JDBC de Microsoft SQL Server dans un tel fichier jar.

Ce que j'ai fait

Qu'est-il arrivé

Lorsque je l'ai exécuté, il a échoué avec cette erreur.

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 

Les personnes qui ont le même problème → https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f5c69fee-8c68-4601-bfcb-376e21dfa809/sql-server-jdbc-javalangsecurityexception-invalid-signature-file- digest? forum = sqldataaccess

Cause

Est-ce parce que la signature est dans sqljdbc4.jar? ↑ Je ne comprends pas du tout.

Solution

N'incluez pas le fichier de signature (?) Inclus dans sqljdbc4.jar dans le fichier jar final.

pom.xml


(snip)
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
(snip)
                <configuration>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
(snip)

Un par un

Vous devez comprendre comment Java gère et exécute les fichiers jar. .. ..

Recommended Posts

[Java] [Microsoft] Éléments à prendre en compte lors de l'inclusion du pilote JDBC SQL Server dans un fichier jar
Éléments à prendre en compte lors de l'écriture de code en Java
Points à prendre en compte lors de l'écriture de Java
[Java] Éléments à prendre en compte lors de la sortie de FizzBuzz
Résumer le cycle de vie des objets Java à prendre en compte dans le développement Android
Branchement conditionnel du résultat de l'instruction SQL pour n'en rechercher qu'une seule en Java
[Java] [SQL Server] Se connecter à SQL Server 2017 local à l'aide de JDBC pour SQL Server
[Java Silver] Ce qu'il faut savoir concernant les instructions switch
Comment incrémenter la valeur de Map sur une ligne en Java
Est-il facile à utiliser pour l'utilisateur lors de la mise en œuvre de fonctions à usage général? Soyons conscients de
Comment trouver le nombre total de pages lors de la pagination en Java
Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0
Lorsque Eclipse ne parvient pas à démarrer le serveur
Points à connaître avec Java Equals
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
«Le serveur de prise en charge des langues pour Java a planté 5 fois au cours des 3 dernières minutes. Le serveur ne sera pas redémarré.»
SpringBoot 2.3.0 ou version ultérieure ne parvient pas à résoudre l'espace réservé utilisé pour la valeur de @PropertySource
Exemple de code pour obtenir les valeurs des principaux types SQL dans Java + Oracle Database 12c
Comment dériver le dernier jour du mois en Java
[Rails] Où faire attention dans la description de la validation
Assurez-vous de comparer le résultat Java compareTo avec 0
Réintroduction à Java for Humanities 0: Comprendre l'acte de programmation
Fixez le nom du fichier de guerre à celui défini dans Maven
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Juger si les chaînes de caractères à comparer sont les mêmes en Java
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Méthode d'enquête lorsque le processeur du serveur exécutant java est lourd
Comment obtenir la longueur d'un fichier audio avec Java
[Java] Comparaison d'équivalence où les débutants échouent dans la comparaison de chaînes de caractères. Vous n'êtes peut-être même pas conscient de l'erreur! ??
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java