使用Android和Android的协议缓冲区Eclipse:NoClassDefFoundError

时间:2012-12-13 13:12:43

标签: java android eclipse protocol-buffers noclassdeffounderror

我想通过HttpClient发送一些数据,并尝试使用Protocol Buffers。 已创建描述符,以及编译的.proto文件以获取关联的.java文件。我在我的Android类中调用这个类没有任何问题,比如教程&自述可以说。 Eclipse并没有抱怨任何事情。

现在我将下载的库(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();

我真的没有看到我在哪里弄乱任何图书馆链接。如果你们中的任何一个人对可能缺少的东西有所了解,那就是sweeeeet!

提前致谢。

编辑::

当我查看dexedLibs文件夹(在/ bin中)时,当protobuf为1 kB大时,支持库的实际大小!

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

1 个答案:

答案 0 :(得分:0)

<强>解决

一切都很好,除了我没有正确构建库jar文件(Manifest)...