2013-07-10 138 views
0

我剛剛更新了我的Android SDK到r22。我知道這次更新出現了一些問題,但它更專注於Eclipse的Android ADT。我的問題,我今天一直在困擾着我的大腦,這與Bouncy CastleAndroid SDK r22 Bouncy Castle失敗

我正在構建一個PhoneGap應用程序,直到此更新一切正常,但現在它在構建失敗。

我正在使用命令行來構建應用程序(使用PhoneGap在/ cordova文件夾中提供的構建工具)。

這是我得到的錯誤是:

BUILD FAILED 
/Users/rhystague/Development/mobile-dev/android-dev/android-sdk-macosx/tools/ant/build.xml:955: The following error occurred while executing this line: 
/Users/rhystague/Development/mobile-dev/android-dev/android-sdk-macosx/tools/ant/build.xml:966: The following error occurred while executing this line: 
/Users/rhystague/Development/mobile-dev/android-dev/android-sdk-macosx/tools/ant/build.xml:310: java.lang.VerifyError: class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Z 

在此之後,我得到堆棧跟蹤。我已經把它放在這個問題的底部。

這是我的環境和我試過的東西。

環境

Mac OS X 10.8.4 
Java 1.6 
Java 1.7 

在Mac OS 10.8.4 java的安裝位置是不同的。當我鍵入:

which java 
I get :/usr/bin/java 

java -version 
1.6 Version 

/usr/libexec/java_home 
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Content/Home 

To run the 1.7 version I have to go to it's home directly which is 
/Library/Internet plugins/JavaAppletPlugin.plugin/Contents/Home 

我發現它might be a problem with a library which is on my computer,充氣城堡(bcprov-jdk15-143.jar)。我嘗試了這些步驟,我得到的只是Java的ClassDefNotDefined問題。

我試圖將文件移動到我的項目中的libs文件夾中,試圖查看是否可以修復,什麼也不修復。

我試圖將庫更新到更新版本的Bouncy Castle(bcprov-jdk15-on-149.jar) 我得到的所有內容都是Java的ClassDefNotDefined。

我嘗試了一個新的手機差距應用程序,認爲它可能與設置有關,但仍然是同樣的問題。

說實話,我不是一個Java強大的球員,所以我只知道基礎知識。也許它很簡單,或者也許是別的。

無論哪種方式,我阻止了我在我的軌道。我無法測試任何東西。

下面是從錯誤以下堆棧跟蹤吐出

at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1128) 
    at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1299) 
    at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1355) 
    at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315) 
    at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:446) 
    at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:394) 
    at com.android.ant.ApkBuilderTask.execute(ApkBuilderTask.java:334) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
    at com.android.ant.IfElseTask.execute(IfElseTask.java:124) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
    at com.android.ant.IfElseTask.execute(IfElseTask.java:124) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:392) 
    at org.apache.tools.ant.Target.performTasks(Target.java:413) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
    at org.apache.tools.ant.Main.runBuild(Main.java:811) 
    at org.apache.tools.ant.Main.startAnt(Main.java:217) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
+0

我已經恢復了舊版本的SDK,它工作正常。我想我會通過更新的動作來查看是什麼導致了錯誤。這是帶來這個問題的Android構建工具。只要我把它安裝到17就會產生這個錯誤。 – Sententia

+0

在四處尋找後,我發現了一篇關於新ADT 22和Tools 22 Release(http://tools.android.com/recent/adt22andtools22released)的文章。他們聲稱他們正在從默認的Sun JVM API轉移到Bouncy Castle庫。你如何在命令行補償這一點,以防止這種構建失敗。 – Sententia

回答

0

你應該嘗試使用SpongyCastle如果你需要另外功能不被支持的Android。

+0

爲了在下載它之後使用它,我將它放在我的項目的libs文件夾中嗎?或者我必須改變我的構建文件中的東西? – Sententia

+0

如果您使用Eclipse或Ant,只需將它添加到libs文件夾即可。在使用Cordova時不太確定該怎麼做。 – Frohnzie

2

我有這個問題建立Phonegap android版本(在版本3中使用新的phonegap run android命令),並發現我有一個/Library/Java/Extensions下的Bouncy Castle版本 - 我以前遇到過在這裏安裝JAR的問題與其他JAR衝突。

當我將bc*.jar文件移出該文件夾時,我的Android Phonegap應用程序開始成功建立。

請注意,這些庫可能已被其他應用程序/工具放置在那裏,可能會無意中破壞,但您無法真正知道安裝它是什麼,直到您嘗試運行其他工具並且失敗!

+0

賓果!解決了我的問題。將看看是否有其他任何破壞:) –

相關問題