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ı?
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.exeanahtarı kontrol edilir. - 2. Sistem PATH Ortam Değişkeni Sıralaması: Windows, komut isteminde olduğu gibi
PATHdeğişkeninde soldan sağa doğru arama yapar. Oracle Java kurulumu genellikle sistem yolunun en başına sembolik bağlayıcı olanC:\Program Files (x86)\Common Files\Oracle\Java\javapathveya 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-bitSystem32/SysWOW64yolu ç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 deC:\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 + Rtuşlarına basıpsysdm.cplyazı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_HOMEdeğ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\javapathgibi 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.
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.