⚖️
UYAP Teknik Destek Hukukçular İçin UYAP, Java ve UDF Çözüm Masası

E-imza ile giriş yaparken 32 bit ve 64 bit Java sürümleri aynı anda kurulu olunca UYAP E-İmza Uygulaması hangi Java path'ini kullanıyor, ortam değişkenlerinden (Environment Variables) ayarlamam şart mı?

Bilgisayarımda hem adliye Doküman Yönetim Sistemi (DYS) ve bazı eski kamu yazılımlarının zorunlu kıldığı 32-bit (x86) Java 8, hem de yüksek bellek gerektiren modern veri analiz yazılımları için 64-bit (x64) Java kurulu durumda. UYAP Avukat Portalı veya Kurum Portalı'na e-imza ile giriş yapmak istediğimde yerel olarak tetiklenen UYAP E-İmza Uygulaması zaman zaman 'Akıllı kart okuyucu bulunamadı', 'Kart takılı değil' veya 'PKCS11 kütüphanesi yüklenemedi: Can't load IA 32-bit .dll on a AMD 64-bit platform' hatası vererek giriş yapmamı engelliyor. Sistemde iki farklı mimaride Java varken UYAP hangi Java çalışma ortamını (JRE) öncelikli olarak seçer; Windows Sistem Ortam Değişkenleri (PATH ve JAVA_HOME) üzerinden önceliklendirme yapmak şart mıdır ve bu DLL mimari uyuşmazlığı nasıl kesin olarak çözülür?
Durum: Çözüldü Kategori: Soru-Cevap

2 Cevap

✓

Merhaba, tek bir bilgisayarda hem 32-bit hem de 64-bit Java sürümlerinin bir arada bulunması, elektronik imza (E-İmza) token donanımları ile UYAP portalları arasında karşılaşılan mimari krizlerin bir numaralı sebebidir. Karşılaştığınız 'Can't load IA 32-bit .dll on a AMD 64-bit platform' (veya tersi) hatası, Java çalışma zamanı mimarisi (x86/x64) ile akıllı kart sürücüsünün dinamik bağlantı kütüphanesi (PKCS#11 DLL) mimarisinin birbiriyle fiziksel olarak uyuşmamasından kaynaklanan klasik bir UnsatisfiedLinkError hatasıdır.

UYAP Hangi Java Path'ini Kullanır? (Yürütme Önceliği Mantığı):

UYAP Portalı'nda 'E-İmza ile Giriş' butonuna bastığınızda, tarayıcınız yerel işletim sistemine kayıtlı uyap:// özel protokolünü tetikler veya arka planda 127.0.0.1 yerel soketinde dinleyen UYAP E-İmza Uygulamasını çağırır. Windows bu çağrıyı başlatırken Java yolunu sırasıyla şu hiyerarşiye göre tespit eder:

  • 1. Windows Kayıt Defteri (Registry) App Paths: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\javaws.exe anahtarı kontrol edilir.
  • 2. Sistem PATH Ortam Değişkeni Sıralaması: Windows, komut isteminde olduğu gibi PATH değişkeninde soldan sağa doğru arama yapar. Oracle Java kurulumu genellikle sistem yolunun en başına sembolik bağlayıcı olan C:\Program Files (x86)\Common Files\Oracle\Java\javapath veya 64-bit sürümünü ekler. PATH listesinde hangi mimarinin yolu daha üstte yer alıyorsa Windows o Java'yı çalıştırır!
  • 3. Akıllı Kart DLL Mimarisi Çatışması: TÜBİTAK Kamu SM (AKİS), e-GÜVEN, Türktrust veya E-Tuğra akıllı kartınızı bilgisayara taktığınızda, Java bu karta erişebilmek için üreticinin PKCS#11 kütüphanesini (örneğin akisp11.dll) belleğe yüklemek zorundadır. Eğer Windows PATH önceliği nedeniyle 64-bit Java'yı tetiklemişse, ancak kart sürücüsü sisteme yalnızca 32-bit DLL yüklemişse (veya 32-bit System32/SysWOW64 yolu çağrılmışsa), 64-bit Java motoru 32-bitlik bir DLL dosyasını adresleyemez ve anında çökerek kartı görmez.

Ortam Değişkenlerinden (Environment Variables) Ayarlamak Şart mıdır?

EVET, KESİNLİKLE ŞARTTIR! Eğer sisteminizde her iki mimari kuruluysa ve bunu rastlantısal Windows PATH sırasına bırakırsanız; Java otomatik güncellendiğinde sıra değişecek ve e-imzanız periyodik olarak çalışmaz hale gelecektir.

Bu Çatışmayı Kalıcı Olarak Çözen 3 Adımlı Konfigürasyon:

1. Hem 32-Bit Hem 64-Bit Akıllı Kart Sürücülerini Eksiksiz Kurun

  • Kullandığınız kart üreticisinin (örneğin Kamu SM AKİS web sitesinden) güncel sürücü sayfasına gidin.
  • Hem AKİS 64-Bit hem de AKİS 32-Bit sürücü paketlerini indirip aynı bilgisayara kurun.
  • Böylece sisteminizde hem C:\Windows\System32\akisp11.dll (64-bit) hem de C:\Windows\SysWOW64\akisp11.dll (32-bit) kütüphaneleri aynı anda yer alır ve hangi Java çağrılırsa çağrılsın kendi bit seviyesine uygun DLL'i bulabilir.

2. Ortam Değişkenlerini (PATH ve JAVA_HOME) Doğru Sıralayın

  • Klavyeden Windows + R tuşlarına basıp sysdm.cpl yazın ve Enter'a basın (Sistem Özellikleri açılır).
  • Gelişmiş sekmesine geçip en alttaki Ortam Değişkenleri (Environment Variables) butonuna tıklayın.
  • Sistem Değişkenleri bölümünde JAVA_HOME değişkenini bulun (yoksa Yeni diyerek oluşturun) ve değerini UYAP E-İmza Uygulamasının en kararlı çalıştığı 64-bit JRE yolu olarak belirleyin:
    C:\Program Files\Java\jre1.8.0_xxx
  • Ardından Path değişkenini seçip Düzenle butonuna tıklayın.
  • Listede yer alan Common Files\Oracle\Java\javapath gibi genel yönlendiricileri seçip silin veya en alta taşıyın. En üste Yeni diyerek şu iki satırı ekleyin ve Yukarı Taşı butonuyla en tepeye yerleştirin:
    1. C:\Program Files\Java\jre1.8.0_xxx\bin (Öncelikli 64-bit Java)
    2. C:\Program Files (x86)\Java\jre1.8.0_xxx\bin (İkincil 32-bit Java)
  • Tamam diyerek tüm pencereleri kapatın.

3. Komut İsteminden Önceliği Doğrulayın

Komut Satırını (cmd) açıp java -version yazın. Ekranda Java HotSpot(TM) 64-Bit Server VM yazısını görüyorsanız önceliklendirme başarıyla tamamlanmıştır. Artık UYAP E-İmza Uygulaması 64-bit Java motoru üzerinden çalışacak, hem 64-bit AKIS sürücüsüyle kusursuz haberleşecek hem de 32-bit DYS uygulamanız kendi özel kısayolundan 32-bit Java'yı bağımsız olarak kullanmaya devam edecektir.

Yanıtlayan
UYAP Sistem Destek T.

Hukuk büroları için altın değerinde pratik tavsiye: Eğer adliyede görevli bir katip değilseniz ve sadece UYAP Avukat Portalı, Celb/İcra ve e-Dava açılışlarını kullanıyorsanız, bilgisayarınızda eski 32-bit Java bulundurmanıza kesinlikle gerek yoktur. Denetim Masası'ndan tüm eski 32-bit Java sürümlerini tamamen kaldırıp, sadece tek bir güncel 64-bit Java JRE ve 64-bit AKİS kurarsanız; tüm PATH çakışmaları, bellek yetmezlikleri ve DLL hataları kökünden çözülmüş olur.

Yanıtlayan
Av. Cemil B.