2014-07-07 184 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文件夾中。

對我來說,這只是一個解決方法來解鎖我的情況。
相關問題