为什么执行激活器会给出 ExceptionInInitializerError,原因是:java.security.NoSuchAlgorithmException:SHA1 MessageDigest 不可用?
Why does executing activator give ExceptionInInitializerError caused by: java.security.NoSuchAlgorithmException: SHA1 MessageDigest not available?
在 Windows 上用 Java 8 在 cygwin 上从 Typesafe Activator 1.2.12 执行 activator
时,出现以下异常:
java.lang.ExceptionInInitializerError
at xsbt.boot.Update.settings$lzycompute(Update.scala:79)
at xsbt.boot.Update.settings(Update.scala:74)
at xsbt.boot.Update.ivyLockFile$lzycompute(Update.scala:96)
at xsbt.boot.Update.apply(Update.scala:103)
at xsbt.boot.Launch.update(Launch.scala:355)
at xsbt.boot.Launch.xsbt$boot$Launch$$retrieve(Launch.scala:210)
at xsbt.boot.Launch$$anonfun.apply(Launch.scala:218)
at scala.Option.getOrElse(Option.scala:120)
at xsbt.boot.Launch.xsbt$boot$Launch$$getAppProvider0(Launch.scala:218)
at xsbt.boot.Launch$$anon.call(Launch.scala:198)
at xsbt.boot.Locks$GlobalLock.withChannel(Locks.scala:98)
at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries(Locks.scala:81)
at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock.apply(Locks.scala:102)
at xsbt.boot.Using$.withResource(Using.scala:11)
at xsbt.boot.Using$.apply(Using.scala:10)
at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
at xsbt.boot.Locks$.apply0(Locks.scala:31)
at xsbt.boot.Locks$.apply(Locks.scala:28)
at xsbt.boot.Launch.locked(Launch.scala:240)
at xsbt.boot.Launch.app(Launch.scala:149)
at xsbt.boot.Launch.app(Launch.scala:147)
at xsbt.boot.Launch$.run(Launch.scala:102)
at xsbt.boot.Launch$$anonfun$apply.apply(Launch.scala:36)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:19)
at xsbt.boot.Boot$.runImpl(Boot.scala:44)
at xsbt.boot.Boot$.main(Boot.scala:20)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.RuntimeException: The SHA1 algorithm is not available in your classpath
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.<clinit>(DefaultRepositoryCacheManager.java:86)
... 29 more
Caused by: java.security.NoSuchAlgorithmException: SHA1 MessageDigest not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.MessageDigest.getInstance(MessageDigest.java:159)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.<clinit>(DefaultRepositoryCacheManager.java:84)
... 29 more
Error during sbt execution: java.lang.ExceptionInInitializerError
sbt
很有魅力。
什么是解决方案?
有一天我遇到了类似的错误,就我而言,我不得不手动解压缩一些 Java *.pack
文件。
$ find . -type f -name '*.pack'
./jre/lib/charsets.pack
./jre/lib/deploy.pack
./jre/lib/ext/jfxrt.pack
./jre/lib/ext/localedata.pack
./jre/lib/javaws.pack
./jre/lib/jsse.pack
./jre/lib/plugin.pack
./jre/lib/rt.pack
./lib/tools.pack
每个文件都必须像 unpack200.exe jsse.pack jsse.jar
一样解压,然后 "The SHA1 algorithm is not available in your classpath" 的问题就解决了。
在 Windows 上用 Java 8 在 cygwin 上从 Typesafe Activator 1.2.12 执行 activator
时,出现以下异常:
java.lang.ExceptionInInitializerError
at xsbt.boot.Update.settings$lzycompute(Update.scala:79)
at xsbt.boot.Update.settings(Update.scala:74)
at xsbt.boot.Update.ivyLockFile$lzycompute(Update.scala:96)
at xsbt.boot.Update.apply(Update.scala:103)
at xsbt.boot.Launch.update(Launch.scala:355)
at xsbt.boot.Launch.xsbt$boot$Launch$$retrieve(Launch.scala:210)
at xsbt.boot.Launch$$anonfun.apply(Launch.scala:218)
at scala.Option.getOrElse(Option.scala:120)
at xsbt.boot.Launch.xsbt$boot$Launch$$getAppProvider0(Launch.scala:218)
at xsbt.boot.Launch$$anon.call(Launch.scala:198)
at xsbt.boot.Locks$GlobalLock.withChannel(Locks.scala:98)
at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries(Locks.scala:81)
at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock.apply(Locks.scala:102)
at xsbt.boot.Using$.withResource(Using.scala:11)
at xsbt.boot.Using$.apply(Using.scala:10)
at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
at xsbt.boot.Locks$.apply0(Locks.scala:31)
at xsbt.boot.Locks$.apply(Locks.scala:28)
at xsbt.boot.Launch.locked(Launch.scala:240)
at xsbt.boot.Launch.app(Launch.scala:149)
at xsbt.boot.Launch.app(Launch.scala:147)
at xsbt.boot.Launch$.run(Launch.scala:102)
at xsbt.boot.Launch$$anonfun$apply.apply(Launch.scala:36)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:19)
at xsbt.boot.Boot$.runImpl(Boot.scala:44)
at xsbt.boot.Boot$.main(Boot.scala:20)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.RuntimeException: The SHA1 algorithm is not available in your classpath
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.<clinit>(DefaultRepositoryCacheManager.java:86)
... 29 more
Caused by: java.security.NoSuchAlgorithmException: SHA1 MessageDigest not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.MessageDigest.getInstance(MessageDigest.java:159)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.<clinit>(DefaultRepositoryCacheManager.java:84)
... 29 more
Error during sbt execution: java.lang.ExceptionInInitializerError
sbt
很有魅力。
什么是解决方案?
有一天我遇到了类似的错误,就我而言,我不得不手动解压缩一些 Java *.pack
文件。
$ find . -type f -name '*.pack'
./jre/lib/charsets.pack
./jre/lib/deploy.pack
./jre/lib/ext/jfxrt.pack
./jre/lib/ext/localedata.pack
./jre/lib/javaws.pack
./jre/lib/jsse.pack
./jre/lib/plugin.pack
./jre/lib/rt.pack
./lib/tools.pack
每个文件都必须像 unpack200.exe jsse.pack jsse.jar
一样解压,然后 "The SHA1 algorithm is not available in your classpath" 的问题就解决了。