mvn archetype:create SHA-256 MessageDigest 不可用

mvn archetype:create SHA-256 MessageDigest not available

这是我第一次尝试maven。我的 os 在 linuxmint。我已经成功安装了 maven。

mvn -v

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /home/gzx/danale/environment/apache-maven-3.3.9 Java version: 1.8.0_111, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_111/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "4.4.0-53-generic", arch: "amd64", family: "unix"

但是当我用过mvn archetype:create

mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook

它显示了一个奇怪的错误。

[WARNING] Error injecting: org.sonatype.plexus.components.cipher.DefaultPlexusCipher com.google.inject.ProvisionException: Unable to provision, see the following errors:Error injecting constructor, org.sonatype.plexus.components.cipher.PlexusCipherException: java.security.NoSuchAlgorithmException: SHA-256 MessageDigest not available at org.sonatype.plexus.components.cipher.DefaultPlexusCipher.(Unknown Source) while locating org.sonatype.plexus.components.cipher.DefaultPlexusCipher

好奇怪,我该怎么办?

我想你可能已经想通了你的问题。但是我昨天遇到了这个错误,今天我修复了它。我应该写下我的解决方案。也许有人会落入这个陷阱。

其实这个问题是因为Java找不到class"SHA-256 MessageDigest"。但它是JRE默认提供的。应该会自动找到。

如果你访问你的JAVA_HOME,你可能会在JAVA_HOME/jre/lib中找到一个名为jsse.pack的文件,而没有一个名为jsse.jar的文件。那就是问题所在。输入

unpack200 jsse.pack jsse.jar 

(unpack200 将在您设置 Java 路径后立即被识别)

问题应该解决了。

注意: 有些JDK的jsse.rar不是jsse.pack,因此,运行"unpack200 jsse.rar jsse.jar"命令会得到想要的结果,不会删除"jsse.rar"文件(如果是 *.pack 文件,它们会被 *.jar 文件替换)。