【问题标题】:Eclipse Installer: can not initialize cryptographic mechanismEclipse Installer:无法初始化加密机制
【发布时间】:2018-01-11 15:42:38
【问题描述】:

我的计算机上安装了 OpenJDK 9,我正在尝试安装 Eclipse。但是,每次启动安装程序时都会出现错误:

内部错误: 无法初始化加密机制

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

然后它让我可以选择更新:

这是一个紧急更新:继续?

点击yes后出现这个错误:

无法初始化类 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

最后,出现这条消息:

JVM 终止。退出代码=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 安装程序 --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 -退出数据 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

有什么办法可以解决这个问题,以便我可以安装 eclipse?

【问题讨论】:

标签: java eclipse ssl


【解决方案1】:

我正在努力解决一个非常相似的问题并找到了解决方案(您的问题有相同的原因,可以通过相同的方式解决)。在带有 JDK 9 的 Ubuntu 17.04 上安装 Eclipse 后,启动时出现以下错误:Loading available Gradle versions has encountered a problemDetails 按钮显示此错误:

An internal error occurred during: "Loading available Gradle versions".
Could not initialize class sun.security.ssl.SSLContextImpl$DefaultSSLContext

稍后您在使用 Eclipse 时可能会遇到相关错误。

我在looking very similar problem in docker 之后发现,问题出在没有/conf 目录的Ubuntu 17.04 JDK 安装(build 9-Ubuntu+0-9b161-1)中。这应该在 Ubuntu 17.10 的较新 JDK 版本中得到修复。

到目前为止,您有 2 个选项可以自行解决此问题:

  1. (简单的方法,用符号链接伪造conf 目录):使用以下命令在JDK 9 目录中创建符号链接(对我来说是/usr/lib/jvm/default-java):sudo ln -sn lib conf 由于安全策略文件位于 /lib 下,因此可以解决问题。

  2. (更复杂,通过安装带有适当 /conf 目录的替代 JDK 来解决问题):从 Oracle 下载 JDK 9 并安装到任意文件夹中;然后将此文件夹添加到 PATH(例如在 .bashrc 中);然后将 JAVA_HOME 更改为 /etc/environment 中的此文件夹

【讨论】:

    【解决方案2】:

    了解如何直接configure Eclipse (Installer) for Java 9download an Eclipse package 而不是使用 Eclipse 安装程序。

    【讨论】:

      猜你喜欢
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多