eclipse中的- The declared package "" does not match the expected package""
这个问题是在使用aidl时遇见,导致adt自动生成的.java文件不能正常运行,在网上搜索了些相关资料,在此整理一下。。。
最先在包中定义aidl文件时,大致情况如下:
1 interface remote{ 2 String get(); 3 double judge(); 4 }
这时自动生成的.java文件就会报RT的错。
这是因为,包名必须在程序中通过package语句来指定(例如 package com.init),而不是单纯的靠目录结构来指定,是先有了包名之后,才需要相应的目录结构。这时实际上的类名为当前aidl文件所在包名。必须把包声明放在源文件最前面,并且每个源文件最多只能声明一个包(在Eclipse中,由于一般是先新建包,eclipse创建package的时候自动帮你创建了目录了,最好要声明包,养成良好的编码风格和习惯)。
1 package org.star.service; 2 interface remote{ 3 String get(); 4 double judge(); 5 }
一定要注意此处路径问题。另外,package的名字和结构必须和相关的目录名一致,包括大小写也要一致。Eclipse会在对应service\bin目录下生成org\star\目录,并且在org\star\目录下生成org\star\目录,但是实际上此class的名称为org.star.service.class。当然,在Eclipse中可以直接运行,但是在dos命令下,一定要注意实质上的编译和运行实际路径和类名等问题。