Échec de connexion à IronPdfEngine à partir d'un JAR Fat
Lorsque votre application IronPDF for Java est empaquetée sous la forme d'un JAR fat (uber), le client ne peut pas se connecter au moteur de rendu interne. IronPdfEngine démarre et écoute sur le port correct, mais le client Java effectue 20 tentatives de connexion qui échouent à chaque fois.
Failed to connect to IronPdfEngine after 20 attempts
L'échec provient de la fusion de chaque dépendance en un seul JAR autoproduit (uber) — par exemple avec le plugin Maven Shade ou Gradle Shadow. Les fichiers de ressources chevauchants provenant des dépendances fusionnées empêchent le client Java d'atteindre le sous-processus IronPdfEngine : le moteur se lance et ouvre le port attendu, mais le client ne parvient jamais à se connecter et abandonne après 20 tentatives. Garder chaque dépendance en tant que fichier distinct dans le classpath évite le conflit.
Solution
Construisez le projet normalement, copiez ses dépendances dans un dossier, puis lancez l'app en orientant Java directement vers ces fichiers au lieu d'utiliser java -jar.
1. Construisez le Projet
mvn clean package
2. Copiez les Dépendances d'Exécution
Placez chaque bibliothèque dans target/libs en tant que JARs séparés, ce qui est nécessaire avec l'approche du classpath :
mvn dependency:copy-dependencies -DoutputDirectory=target/libs
3. Exécutez à partir du Classpath
Lancez l'app en utilisant le classpath éclaté plutôt que le JAR fat. Remplacez com.example.Main par votre véritable classe principale.
Windows :
java --add-opens java.base/java.nio=ALL-UNNAMED -cp "target/classes;target/libs/*" com.example.Main
Linux / macOS:
java --add-opens java.base/java.nio=ALL-UNNAMED -cp "target/classes:target/libs/*" com.example.Main
La seule différence entre les deux commandes est le séparateur de classpath : un point-virgule (;) sous Windows, un deux-points (:) sous Linux et macOS.
Conseils de débogage
- Ce qui ne fonctionne pas : exécuter depuis le JAR fat lance
IronPdfEngineavec succès, mais le client Java ne se connecte jamais. --add-opensseul n'est pas suffisant : ajouter le drapeau JVM tout en exécutant depuis un JAR fat ne corrige pas l'échec de connexion. Le drapeau est important uniquement en combinaison avec le lancement via classpath ci-dessus.- Chaînes de version PDF/A : si votre code passe une version PDF/A en tant qu'argument de chaîne, utilisez
PdfA2a, pasPdfAVersions.PdfA2a.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.