2012-12-13 35 views
1

我想通過HttpClient發送一些數據,並試圖使用協議緩衝區。 描述符已被創建,以及我的.proto文件被編譯以獲取關聯的.java文件。我在我的Android類中調用這個類沒有任何問題,並且喜歡教程&自述文件可以說。 Eclipse不會抱怨任何事情。安卓和Eclipse的協議緩衝區:NoClassDefFoundError

現在我將下載庫(protobuf-2.5.0rc1和protoc-2.5.0rc1-win32)的所有編譯文件添加到.jar(整個文件夾中的javac,然後tar cvf)。

這個.jar文件現在位於:libs + AndroidDependencies + ReferencedLibrairies。

原始文件位於/ libs文件夾中。 在構建路徑中,protobuf.jar庫設置爲導出。

啓動應用程序工作正常,但每當我試圖用我的原製造商,這裏是我從DDMS得到:

12-13 13:55:54.750: E/AndroidRuntime(12647): Caused by: java.lang.NoClassDefFoundError: xxx.xxxx.xxxx.yyy.ProtoObject$Objectmsg 
12-13 13:55:54.750: E/AndroidRuntime(12647): at xxx.xxxx.xxxx.xxx.myActivity$Task.doInBackground(myActivity.java:x) 
12-13 13:55:54.750: E/AndroidRuntime(12647): at xxx.xxxx.xxxx.xxx.myActivity$Task.doInBackground(myActivity.java:x) 

這裏是我的原型文件

package xxx.xxxx.xxxx.yyy; 

option java_outer_classname="ProtoObject"; 

message Objectmsg { 
    required int32 aaa = 1; 
    required string bbb = 2; 
    required string ccc = 3; 
    required string ddd = 4; 
    required string eee = 5; 
    repeated string fff = 6; 
    repeated string ggg = 7; 
    repeated string hhh = 8; 
} 

中的代碼Android應用程序

import xxx.xxxx.xxxx.yyy.ProtoObject; 

... 

Objectmsg omsg = ProtoObject.Objectmsg.newBuilder() 
        .setAaa(an Integer) 
        .setBbb(a String) 
        .setCcc(a String) 
        .setDdd(a String) 
        .addAllEee(an arraylist) 
        .addAllFff(an arraylist) 
        .addAllGgg(an arraylist) 
        .build(); 

我真的不知道我可以在哪裏搞亂任何庫鏈接NG。如果你們中的任何一個人對可能缺失的東西有所瞭解,那就是甜心!

在此先感謝。

編輯::

當我看看的dexedLibs文件夾(如/ bin內)的支持庫有一個真正的大小時protobuf的是1 KB大!

android-support-v4-4a44d81301e680a21725a9812ec65b60   132kB 
protobuf-d8a49056234d83f3a745e8697859be32   1kB 
+0

你可以發佈您的代碼,以便更好地理解。 –

+0

代碼就在這裏了。我可以在建設者上添加電話,但我非常懷疑這會有所幫助。 – PeterGriffin

+0

我想你發佈到服務器創建一個prblm –

回答

0

解決

一切都很好,從一開始,只是我沒有BUIL庫jar文件正確(艙單)...

+0

我想我有同樣的問題,你能告訴我你是如何修復它的更多細節?我dexedLibs中的lib文件也只有1kb。 – Max

+0

嗯,我正在手工建造圖書館,只是把所有東西都燒燬了。使用Maven提供了一個適當的歸檔和它的詳細清單。 – PeterGriffin