2014-07-07 186 views
1

我有一个用PowerShell编写的需要签名Android APK的生成脚本。无法找到或加载主类sun.security.tools.jarsigner.Main

task PackageForAndroid -Description "Get the Android apk ready for deployment" { 
    if (! (Test-Path env:JAVA_HOME)) { 
     Write-Host "Please install the Java JDK and set your JAVA_HOME environment variable." 
     exit 1   
    } 

    $javaHome = (Get-Item env:JAVA_HOME).Value 
    Exec { & "$javaHome\bin\jarsigner.exe" -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $buildDir/certs/cosmicgame.keystore -signedjar $buildOutputDir/$androidApkName-signed.apk $buildOutputDir/$androidApkName.apk cosmicgame } "Signing the Android apk Failed" 

    # Now zipalign it. The -v parameter tells zipalign to verify the APK afterwards. 
    Exec { & "$buildDir\modules\zipalign.exe" -f -v 4 $buildOutputDir/$androidApkName-signed.apk $buildArtifactsDir/$androidApkName.$version.$buildNumber.apk } "Zipaligning the Android apk Failed" 
} 

当我检查的$javaHome = (Get-Item env:JAVA_HOME).Value输出我得到合适的路径(C:\Program Files\Java\jre7)。

当我导航到bin目录时,jarsigner.exe就在那里。

我已经更新了我的Android SDK以包含最新的内容,并且我已经将JAVA更新到最新版本。

什么会导致此错误?

Error: Could not find or load main class sun.security.tools.jarsigner.Main

回答

2

在Java 8的tools.jar罐签名者主类的位置发生了变化,以sun.security.tools.jarsigner.Main, 我怀疑你是从Java 8分布在运行jarsigner.exe在您的类路径中包含Java 7 tools.jar。

0

我的jdk1.8.0_121jdk1.8.0_131更新后同样的问题。在lib文件夹中缺少tools.jar。幸运的是,在更新过程中使用了版本121,并且未被擦除,所以我能够将tools.jar复制到新版本的lib文件夹中。

对我来说,这只是一个解决方法来解锁我的情况。
相关问题