Jarsigner“只能指定一个别名”

15

在Windows命令提示符中:

>keytool -genkey -alias me
>keytool -selfcert -alias me
>jarsigner myJar.jar me
Only one alias can be specified

我在网上找不到有关这个错误的任何信息。显然,我只在这里指定了一个别名。我可能做错了什么?


5个回答

29

我遇到了同样的错误。

通过重命名路径中的文件夹,我解决了这个问题。

c:\this is a folder\ replaced with c:\this_is_a_folder\

jarsigner不喜欢文件夹名中有空格


我从不在任何工作区目录中使用空格,但仍然遇到了问题。 - Martin
需要更多信息才能解决问题,您使用的是什么命令?这个特定的问题与类似于以下命令相关:C:\Program Files (x86)\Java\jdk1.7.0_40\bin>jarsigner.exe -verbose -storetype pkcs12 -keystore e:\mk_ca.pfx -tsa http://timestamp.globalsign.com/scripts/timestamp.dll -storepass password "E:\wamp\www\app\test.jar" "keyblahblahblah123" - Joel Davis
2
jarsigner从未看到文件夹中的空格。无法理解它们的是命令行 shell。您需要为其中包含空格的参数加上引号,对于任何程序都是如此。这与jarsigner毫无关系。 - user207421

4

只需在文件名(有空格的)两侧加上引号即可。对于带有空格的参数,您需要将其引起来,以供任何程序使用。这与jarsigner无关。


3

移除文件夹名称中的空格,例如

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks D:\AndroidProject\CheckFinalCodeNew\CheckFinalCode\platforms\android\build\outputs\apk\android-release-unsigned.apk my-alias

这样问题将得到解决。


0
我尽管在路径周围加了引号,也把所有东西移到了一个没有空格的文件夹名字里,但还是遇到了这个错误。结果发现路径中的空格只是一个误导
令人困惑的是,Jarsigner可以在命令提示符窗口中工作,但不能在Powershell、Windows终端应用程序或Ant任务(使用exec作业)中工作。
事实证明,我从PDF中复制并粘贴了基本的Jarsigner命令,而命令中的一个连字符并不是真正的连字符,而是某种Unicode的替身。
(我可能应该让@mark-rabjohn来写这篇文章并获得荣誉,因为他想到了检查是否全是ASCII码,但由于这浪费了我六个小时的生命,我对此并不感到慷慨。)

-2

我曾经遇到过同样的问题,通过从jdk 6切换到jarsigner解决了它。虽然我是用jdk 7的keytool创建了我的证书,但无法使用其jarsigner签名。


谁在给我的回答点踩?为什么?检查其他评论,看看是否有其他用户遇到了这个问题,而没有使用带空格的文件夹名称等。这对我来说是一个有效的解决方案。 - jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接