Tanımadığınız bazı bölgelere geçen bir "konsept kanıtı" iş parçam var. Bir EFTPOS makinesini intranetimizde bir tarayıcıda bir uygulama olarak çalışan bir uygulamaya bağlamakla görevlendirildim.JNI aracılığıyla bir Applet'ten bir DLL çağrısı
Şu an için EFTPOS dll'yi göz ardı ettim ve basit bir JNI ile dekore edilmiş DLL'yi kendi dilimde (Delphi) oluşturdum ve bu sadece c: \ içindeki bir metin dosyasına bir dizeyi kaydeder. yerel Java uygulaması.
Bununla birlikte, aynı şeyi yapmak için bir uygulama oluşturduğumda, .JAR içine derleyin, JAR & oturumunu, başarısız olduğu bir web sayfasında Javascript aracılığıyla uygulama yöntemini çağırmayı deneyin.
Çalıştığım üst düzey bir Java kullanıcısı bunun işe yaratabileceğini düşünmüyor çünkü bir uygulamanın buna izin vermesi için doğal olarak "kötü" olduğu için.
YükLibrary'ye izin vermek için java.policy dosyasına yerleştirebileceğiniz bir girdi var. yanı allPermission & gibi tüm Java konsolda aşağıdaki hata iz üreten boşuna bu doğrultuda bir varyasyon bir bütün ana denedim: java:
java.lang.ExceptionInInitializerError
at app.TestApplet.LogAString(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.DLoggerImpl)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkLink(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at app.DLogger.<clinit>(Unknown Source)
... 16 more
java.lang.Exception: java.lang.ExceptionInInitializerError
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
anahtar çizgi "Neden Olduğu gibi görünüyor. security.AccessControlException: erişim engellendi (java.lang.RuntimePermission loadLibrary.DLoggerImpl) "bir izin sorunu anlamına gelir. Politika dosyasını yanlış - veya yanlış imzaladığım - ya da bunun gibi şeyleri alıyorum ya da Java'nın güvenlik riski nedeniyle bir Applet için bu tür izinlere izin vermeyecek şekilde yapılandırılmış olması olabilir.
Sorumu vaktimi boşa harcıyorum? Öyleyse, & yapılabilir mi? beklentisiyle
Teşekkür
Mike
Bence java uygulaması ile DLL'leri yüklersek, müşterilerin büyük bir yüzdesi (% 95) herhangi bir sorun olmadan uygulamayı çalıştırabilir. Bu nedenle bu davranışa başka bir açıklama olmalı, bu tür bir etkiye neden olan bir çeşit Tarayıcı/JVM/OS kombinasyonu. – davidecr