Reputation: 23
I have OpenJDK 9 installed on my computer and I am attempting to install Eclipse. However, I get an error every time I start the installer:
Internal Error: Cannot initialize cryptographic mechanism
Details: java.lang.ExceptionInInitializerError
at java.base/javax.crypto.JceSecurityManager.<clinit>(JceSecurityManager.java:66)
at java.base/javax.crypto.Cipher.getConfiguredPermission(Cipher.java:2610)
at java.base/javax.crypto.Cipher.getMaxAllowedKeyLength(Cipher.java:2634)
at java.base/sun.security.ssl.CipherSuite$BulkCipher.isUnlimited(CipherSuite.java:602)
at java.base/sun.security.ssl.CipherSuite$BulkCipher.<init>(CipherSuite.java:574)
at java.base/sun.security.ssl.CipherSuite$BulkCipher.<clinit>(CipherSuite.java:460)
at java.base/sun.security.ssl.CipherSuite.<clinit>(CipherSuite.java:1074)
at java.base/sun.security.ssl.SSLContextImpl.getApplicableSupportedCipherSuiteList(SSLContextImpl.java:354)
at java.base/sun.security.ssl.SSLContextImpl.access$100(SSLContextImpl.java:42)
at java.base/sun.security.ssl.SSLContextImpl$AbstractTLSContext.<clinit>(SSLContextImpl.java:590)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:292)
at java.base/java.security.Provider$Service.getImplClass(Provider.java:1844)
at java.base/java.security.Provider$Service.newInstance(Provider.java:1820)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:169)
at java.base/javax.net.ssl.SSLContext.getDefault(SSLContext.java:99)
at org.apache.http.conn.ssl.SSLContexts.createSystemDefault(SSLContexts.java:78)
at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransferFactory.newInstance(HttpClientRetrieveFileTransferFactory.java:27)
at org.eclipse.ecf.internal.provider.filetransfer.Activator.getFileTransfer(Activator.java:608)
at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:92)
at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$InputStreamConnectionHandler.sendConnectionRequest(ECFURIHandlerImpl.java:1641)
at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$ConnectionHandler.process(ECFURIHandlerImpl.java:1392)
at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl.createInputStream(ECFURIHandlerImpl.java:303)
at org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl.createInputStream(ExtensibleURIConverterImpl.java:360)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1269)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.handleArchiveRedirection(SetupCoreUtil.java:549)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:348)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:174)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.createResourceSet(SetupCoreUtil.java:168)
at org.eclipse.oomph.setup.ui.wizards.SetupWizard.<init>(SetupWizard.java:167)
at org.eclipse.oomph.setup.ui.wizards.SetupWizard.<init>(SetupWizard.java:159)
at org.eclipse.oomph.setup.internal.installer.Installer.<init>(Installer.java:40)
at org.eclipse.oomph.setup.internal.installer.InstallerApplication.run(InstallerApplication.java:222)
at org.eclipse.oomph.setup.internal.installer.InstallerApplication.start(InstallerApplication.java:408)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:547)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
at org.eclipse.equinox.launcher.Main.main(Main.java:1472)
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:118)
... 49 more
Caused by: java.lang.SecurityException: Can't read cryptographic policy directory: unlimited
at java.base/javax.crypto.JceSecurity.setupJurisdictionPolicies(JceSecurity.java:324)
at java.base/javax.crypto.JceSecurity.access$000(JceSecurity.java:73)
at java.base/javax.crypto.JceSecurity$1.run(JceSecurity.java:109)
at java.base/javax.crypto.JceSecurity$1.run(JceSecurity.java:106)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:105)
... 49 more
It then gives me the option to update:
This is an emergency update: Contiune?
After clicking yes, this error appears:
Could not initialize class sun.security.ssl.SSLContextImpl$DefaultSSLContext
Details: java.lang.reflect.InvocationTargetException
at org.eclipse.oomph.setup.internal.installer.InstallerApplication$6$2.run(InstallerApplication.java:484)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.security.ssl.SSLContextImpl$DefaultSSLContext
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:292)
at java.base/java.security.Provider$Service.getImplClass(Provider.java:1844)
at java.base/java.security.Provider$Service.newInstance(Provider.java:1820)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:169)
at java.base/javax.net.ssl.SSLContext.getDefault(SSLContext.java:99)
at org.apache.http.conn.ssl.SSLContexts.createSystemDefault(SSLContexts.java:78)
at org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransferFactory.newInstance(HttpClientRetrieveFileTransferFactory.java:27)
at org.eclipse.ecf.internal.provider.filetransfer.Activator.getFileTransfer(Activator.java:608)
at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:92)
at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$InputStreamConnectionHandler.sendConnectionRequest(ECFURIHandlerImpl.java:1641)
at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$ConnectionHandler.process(ECFURIHandlerImpl.java:1392)
at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl.createInputStream(ECFURIHandlerImpl.java:303)
at org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl.createInputStream(ExtensibleURIConverterImpl.java:360)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1269)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.handleArchiveRedirection(SetupCoreUtil.java:549)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:348)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:174)
at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.createResourceSet(SetupCoreUtil.java:168)
at org.eclipse.oomph.setup.ui.SelfCommitContext.changeRepositoryIfNeeded(SelfCommitContext.java:113)
at org.eclipse.oomph.setup.ui.SelfCommitContext.migrateProfile(SelfCommitContext.java:80)
at org.eclipse.oomph.setup.internal.installer.SelfUpdate.resolve(SelfUpdate.java:127)
at org.eclipse.oomph.setup.internal.installer.InstallerApplication$6$2.run(InstallerApplication.java:465)
... 1 more
Finally, this message appears:
JVM terminated. Exit code=1 /usr/bin/java -Xms256M -Xmx1024M -jar /home/george/Downloads/eclipse-installer//plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /home/george/Downloads/eclipse-installer/eclipse-inst -name Eclipse Installer --launcher.library /home/george/Downloads/eclipse-installer//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.500.v20170531-1133/eclipse_1624.so -startup /home/george/Downloads/eclipse-installer//plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.appendVmargs -exitdata 770005 -data @noDefault -vm /usr/bin/java -vmargs -Xms256M -Xmx1024M -jar /home/george/Downloads/eclipse-installer//plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
Is there any way to fix this so I can install eclipse?
Upvotes: 2
Views: 9700
Reputation: 2546
I was struggling with a very similar problem and found the solution (your problem had the same cause and can be fixed the same way). After installing Eclipse on Ubuntu 17.04 with JDK 9, I got the following error on startup: Loading available Gradle versions has encountered a problem
and Details
button reveals this error:
An internal error occurred during: "Loading available Gradle versions".
Could not initialize class sun.security.ssl.SSLContextImpl$DefaultSSLContext
Later you can get related errors when working with Eclipse.
As I found out after looking very similar problem in docker, the problem is in Ubuntu 17.04 JDK installation (build 9-Ubuntu+0-9b161-1) where there is no /conf
directory. This should be fixed in newer JDK build in Ubuntu 17.10.
So far you have 2 options to fix this yourself:
(easy method, fakes conf
directory with symlink): create symlink inside JDK 9 directory (for me it is /usr/lib/jvm/default-java
) with following command: sudo ln -sn lib conf
As security policy files are under /lib, this fixes the problem.
(more complex, solves the problem by installing alternative JDK with proper /conf directory): download JDK 9 from Oracle and install into some arbitrary folder; then add this folder to PATH (e.g. in .bashrc); then change JAVA_HOME to this folder in /etc/environment
Upvotes: 1
Reputation: 34135
See how to configure Eclipse (Installer) for Java 9 or download an Eclipse package directly instead of using the Eclipse installer.
Upvotes: 0