Niepowodzenie polaczenia IronPdfEngine z duzego pliku JAR
Gdy aplikacja IronPDF for Java jest pakowana jako duzy (uber) JAR, klient nie moze polaczyc sie z wewnetrznym silnikiem renderowania. IronPdfEngine uruchamia sie i nasluchuje na poprawnym porcie, ale klient Java podejmuje 20 prób polaczenia i za kazdym razem ponosi porazke.
Failed to connect to IronPdfEngine after 20 attempts
Niepowodzenie wynika z polaczenia kazdej zaleznosci w jeden samodzielnie zmontowany cienisty (uber) JAR — na przyklad za pomoca dodatku Maven Shade lub Gradle Shadow. Nakladajace sie pliki zasobow z polaczonych zaleznosci uniemozliwiaja klientowi Java dotarcie do IronPdfEngine procesu podrzednego: silnik uruchamia sie i otwiera oczekiwany port, ale klient nigdy sie nie polaczy i rezygnuje po 20 probach. Utrzymanie kazdej zaleznosci jako oddzielnego pliku w sciezce klas eliminuje konflikt.
Rozwiązanie
Zbuduj projekt normalnie, skopiuj jego zaleznosci do folderu, a nastepnie uruchom aplikacje, kierujac Java bezposrednio na te pliki zamiast uzywac java -jar.
1. Zbuduj projekt
mvn clean package
mvn clean package
2. Skopiuj zaleznosci podczas wykonywania
Umiesc kazda biblioteke w target/libs jako osobne pliki JAR, jak wymaga tego podejscie sciezki klas:
mvn dependency:copy-dependencies -DoutputDirectory=target/libs
mvn dependency:copy-dependencies -DoutputDirectory=target/libs
3. Uruchom ze sciezki klas
Uruchom aplikacje w odniesieniu do eksplodowanej sciezki klas zamiast do duzego pliku JAR. Zamien com.example.Main na swoja faktyczna glowna klase.
Windows:
java --add-opens java.base/java.nio=ALL-UNNAMED -cp "target/classes;target/libs/*" com.example.Main
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
java --add-opens java.base/java.nio=ALL-UNNAMED -cp "target/classes:target/libs/*" com.example.Main
Jedyna roznica miedzy dwoma poleceniami jest separator sciezki klas: srednik (;) w systemie Windows, dwukropek (:) w systemach Linux i macOS.
Wskazówki dotyczące debugowania
- Co nie dziala: uruchomienie z duzego pliku JAR poprawnie uruchamia
IronPdfEngine, ale klient Java nigdy sie nie laczy. --add-openssam nie wystarczy: dodanie flagi JVM podczas uruchamiania z duzego pliku JAR nie naprawia problemu z polaczeniem. Flaga ma znaczenie tylko w przypadku powyzszego uruchomienia sciezki klas.- Ciagi wersji PDF/A: jezeli twoj kod przekazuje wersje PDF/A jako argument lancuchowy, uzyj
PdfA2a, niePdfAVersions.PdfA2a.


