Fat JAR'den IronPdfEngine Bağlantı Hatası

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Java uygulamanız fat (uber) JAR olarak paketlendiğinde, istemci içsel render motoruna bağlanamaz. IronPdfEngine doğru portta başlatılır ve dinler, ancak Java istemcisi 20 bağlantı girişiminde bulunur ve her seferinde başarısız olur.

Failed to connect to IronPdfEngine after 20 attempts

Başarısızlık, her bir bağımlılığı kendi kendine monte edilmiş tek bir gölgeli (uber) JAR'de birleştirmekten kaynaklanır — örneğin, Maven Shade veya Gradle Shadow eklentisi ile. Birleştirilen bağımlılıklardan gelen çakışan kaynak dosyaları, Java istemcisinin IronPdfEngine alt sürecine ulaşmasını engeller: motor başlatılır ve beklenen portu açar, ancak istemci asla bağlanamaz ve 20 denemeden sonra vazgeçer. Her bağımlılığı sınıf yolunda kendi dosyası olarak tutmak çatışmayı önler.

Çözüm

Projeyi normal bir şekilde inşa edin, bağımlılıklarını bir klasöre kopyalayın, ardından uygulamayı java -jar kullanmak yerine doğrudan bu dosyaları göstererek başlatın.

1. Projeyi İnşa Edin

mvn clean package
mvn clean package
SHELL

2. Çalışma Zamanı Bağımlılıklarını Kopyalayın

Her bir kütüphaneyi, sınıf yolunu gerektiren ayrı JAR'lar olarak target/libs içerisine yerleştirin:

mvn dependency:copy-dependencies -DoutputDirectory=target/libs
mvn dependency:copy-dependencies -DoutputDirectory=target/libs
SHELL

3. Sınıf Yolundan Çalıştırın

Uygulamayı fat JAR yerine patlatılmış sınıf yoluna karşı başlatın. com.example.Main'yi gerçekteki ana sınıfınızla değiştirin.

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
SHELL

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
SHELL

İki komut arasındaki tek fark, sınıf yolu ayırıcıdır: Windows'ta noktalı virgül (;), Linux ve macOS'ta ise iki nokta üst üste (:).

Hata Ayıklama İpuçları

  • Çalışmayan: fat JAR'den çalıştırıldığında IronPdfEngine başarılı bir şekilde başlatılır, ancak Java istemcisi asla bağlanmaz.
  • --add-opens tek başına yeterli değildir: hala fat JAR'den çalıştırılırken JVM bayrağı eklemek bağlantı hatasını düzeltmez. Bayrak, yukarıdaki sınıf yolu başlatmasıyla birlikte kullanıldığında önemlidir.
  • PDF/A sürüm dizileri: kodunuz bir PDF/A sürümünü string argüman olarak geçiyorsa, PdfA2a kullanın, PdfAVersions.PdfA2a değil.
Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Sürüm: 2026.6 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz?
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.