ReadyTalk / avian

[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
https://readytalk.github.io/avian/
Other
1.22k stars 172 forks source link

openjdk8 - java/lang/SecurityException: Cannot locate policy or framework files! #555

Closed deathbeam closed 6 years ago

deathbeam commented 6 years ago

Hello,

I was trying to use Avian for building standalone application from my shaded jar, and I got pretty far but this exception started popping up when I am starting the application. It looks like that the policy/framework files are missing. I am building avian with jdk-8u172 build and source, and I was not able to find anything when searching, so I decided to open issue. Below is stacktrace. Basically, the client is trying to connect to https address there.

java/lang/ExceptionInInitializerError
  at javax/crypto/JceSecurityManager.<clinit> (line 65)
  at javax/crypto/Cipher.getConfiguredPermission (line 2586)
  at javax/crypto/Cipher.getMaxAllowedKeyLength (line 2610)
  at sun/security/ssl/CipherSuite$BulkCipher.isUnlimited (line 535)
  at sun/security/ssl/CipherSuite$BulkCipher.<init> (line 507)
  at sun/security/ssl/CipherSuite.<clinit> (line 614)
  at sun/security/ssl/SSLContextImpl.getApplicableCipherSuiteList (line 294)
  at sun/security/ssl/SSLContextImpl.access$100 (line 42)
  at sun/security/ssl/SSLContextImpl$AbstractTLSContext.<clinit> (line 425)
  at java/lang/Class.forName0 (native)
  at java/lang/Class.forName (line 264)
  at java/security/Provider$Service.getImplClass (line 1634)
  at java/security/Provider$Service.newInstance (line 1592)
  at sun/security/jca/GetInstance.getInstance (line 236)
  at sun/security/jca/GetInstance.getInstance (line 164)
  at javax/net/ssl/SSLContext.getInstance (line 156)
  at okhttp3/OkHttpClient.systemDefaultSslSocketFactory (line 287)
  at okhttp3/OkHttpClient.<init> (line 249)
  at okhttp3/OkHttpClient.<init> (line 222)
  at net/runelite/http/api/RuneLiteAPI.<clinit> (line 42)
  at net/runelite/client/ConfigLoader.fetch (line 54)
  at net/runelite/client/ClientLoader.loadRuneLite (line 72)
  at net/runelite/client/ClientLoader.loadRs (line 52)
  at net/runelite/client/RuneLite.start (line 116)
  at net/runelite/client/RuneLite.main (line 108)
caused by: java/lang/SecurityException: Can not initialize cryptographic mechanism
  at javax/crypto/JceSecurity.<clinit> (line 93)
  at javax/crypto/JceSecurityManager.<clinit> (line 65)
  at javax/crypto/Cipher.getConfiguredPermission (line 2586)
  at javax/crypto/Cipher.getMaxAllowedKeyLength (line 2610)
  at sun/security/ssl/CipherSuite$BulkCipher.isUnlimited (line 535)
  at sun/security/ssl/CipherSuite$BulkCipher.<init> (line 507)
  at sun/security/ssl/CipherSuite.<clinit> (line 614)
  at sun/security/ssl/SSLContextImpl.getApplicableCipherSuiteList (line 294)
  at sun/security/ssl/SSLContextImpl.access$100 (line 42)
  at sun/security/ssl/SSLContextImpl$AbstractTLSContext.<clinit> (line 425)
  at java/lang/Class.forName0 (native)
  at java/lang/Class.forName (line 264)
  at java/security/Provider$Service.getImplClass (line 1634)
  at java/security/Provider$Service.newInstance (line 1592)
  at sun/security/jca/GetInstance.getInstance (line 236)
  at sun/security/jca/GetInstance.getInstance (line 164)
  at javax/net/ssl/SSLContext.getInstance (line 156)
  at okhttp3/OkHttpClient.systemDefaultSslSocketFactory (line 287)
  at okhttp3/OkHttpClient.<init> (line 249)
  at okhttp3/OkHttpClient.<init> (line 222)
  at net/runelite/http/api/RuneLiteAPI.<clinit> (line 42)
  at net/runelite/client/ConfigLoader.fetch (line 54)
  at net/runelite/client/ClientLoader.loadRuneLite (line 72)
  at net/runelite/client/ClientLoader.loadRs (line 52)
  at net/runelite/client/RuneLite.start (line 116)
  at net/runelite/client/RuneLite.main (line 108)
caused by: java/lang/SecurityException: Cannot locate policy or framework files!
  at javax/crypto/JceSecurity.setupJurisdictionPolicies (line 316)
  at javax/crypto/JceSecurity.access$000 (line 50)
  at javax/crypto/JceSecurity$1.run (line 85)
  at java/security/AccessController.doPrivileged (native)
  at javax/crypto/JceSecurity.<clinit> (line 82)
  at javax/crypto/JceSecurityManager.<clinit> (line 65)
  at javax/crypto/Cipher.getConfiguredPermission (line 2586)
  at javax/crypto/Cipher.getMaxAllowedKeyLength (line 2610)
  at sun/security/ssl/CipherSuite$BulkCipher.isUnlimited (line 535)
  at sun/security/ssl/CipherSuite$BulkCipher.<init> (line 507)
  at sun/security/ssl/CipherSuite.<clinit> (line 614)
  at sun/security/ssl/SSLContextImpl.getApplicableCipherSuiteList (line 294)
  at sun/security/ssl/SSLContextImpl.access$100 (line 42)
  at sun/security/ssl/SSLContextImpl$AbstractTLSContext.<clinit> (line 425)
  at java/lang/Class.forName0 (native)
  at java/lang/Class.forName (line 264)
  at java/security/Provider$Service.getImplClass (line 1634)
  at java/security/Provider$Service.newInstance (line 1592)
  at sun/security/jca/GetInstance.getInstance (line 236)
  at sun/security/jca/GetInstance.getInstance (line 164)
  at javax/net/ssl/SSLContext.getInstance (line 156)
  at okhttp3/OkHttpClient.systemDefaultSslSocketFactory (line 287)
  at okhttp3/OkHttpClient.<init> (line 249)
  at okhttp3/OkHttpClient.<init> (line 222)
  at net/runelite/http/api/RuneLiteAPI.<clinit> (line 42)
  at net/runelite/client/ConfigLoader.fetch (line 54)
  at net/runelite/client/ClientLoader.loadRuneLite (line 72)
  at net/runelite/client/ClientLoader.loadRs (line 52)
  at net/runelite/client/RuneLite.start (line 116)
  at net/runelite/client/RuneLite.main (line 108)
deathbeam commented 6 years ago

Hmm, I found that I was using incorrect jdk distribution (with missing policy files). But, after resolving this, I got new issue:

Exception in thread "process reaper" java.lang.UnsatisfiedLinkError: java/io/FileInputStream.available()I
        at java.io.FileInputStream.available(Native Method)
        at java.io.FileInputStream.available(Native Method)
        at java.lang.UNIXProcess$ProcessPipeInputStream.drainInputStream(UNIXProcess.java:518)
        at java.lang.UNIXProcess$ProcessPipeInputStream.processExited(UNIXProcess.java:532)
        at java.lang.UNIXProcess.lambda$initStreams$3(UNIXProcess.java:298)
        at Lambda-7.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Unknown Source)
com/google/inject/ProvisionException
  at com/google/inject/internal/InjectorImpl$2.get (line 1028)
  at com/google/inject/internal/InjectorImpl.getInstance (line 1054)
  at net/runelite/client/RuneLite.main (line 108)

I found this old PR that was fixing similar issue: https://github.com/ReadyTalk/avian/pull/81

deathbeam commented 6 years ago

Nevermind, I did so many things wrong