最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Android的ADT中导入Java的class文件

Android crifan 5427浏览 0评论

【问题】

之前折腾:

【记录】把ANTLR v3整合到Android的App中

的过程中,需要把antlrworks生成好的java的class文件,都导入到当前的ADT中的Android项目中,以便后续代码能够调用到相应的类,进行后续处理。

【解决过程】

1.看到对应的android项目中,bin/classes下面,也有了项目本身的class文件了:

see many class in bin classes

所以,就去试试,把上面自己的class,都导入到这里。

2. 先去建立一个文件夹ExprSimple:

classed new folder

3.然后填上对应的文件夹名称:

use def location to create ExprSimple

4.然后就可以创建好对应的文件夹了:

created ExprSimple folder

5.然后再去导入class:

ExprSimple import

6.从File System中导入:

ExprSimple import class from file system

7.输入路径,找到class文件:

import all ExprSimple related classes

8.然后就可以看到已经导入好的class文件了:

has import all related ExprSimple classes

9.但是后来发现,导入的class,写代码,却无法识别:

input class can not be recognized

10.发现了,貌似当前项目中所对应的文件夹antlrv3demo下面有R.class,而之前写android程序,是可以直接引用对应的R变量的。

但是注意到源码最开始是:

package com.mm.antlrv3demo;

所以,估计找不到已经导入的

ExprSimpleLexer.class

是因为没有包含到对应的antlrv3demo下面。

所以,就去手动全选ExprSimple下面的class,然后移动到:

com.mm.antlrv3demo

下面,变成:

move all classes to main folder

然后再去试试代码能否识别到ExprSimpleLexer。

结果还是无法识别。

11.但是注意到,当前只能识别其项目自己的一些类:

only recognize self class

而对应的gen/com/mm/antlrv3demo下面有对应的两个java源码。

所以猜测是否是,必须在

gen/com/mm/antlrv3demo

下面有对应的java文件,然后才能被自动编译为class,被放到:

bin/com/mm/antlrv3demo

所以,再去试试,把ExprSimple的java源代码,都添加到对应的

gen/com/mm/antlrv3demo

中去,看看能否被识别。

不过打算先单独的导入到另外的一个新建的文件夹:

gen/com/mm/ExprSimple

中去:

under gen import java file

from file system import java

import java files

结果还是代码无法检查到所需的类。

并且,另外发现了,通过Project->Clean,会清除掉,刚刚新添加进来的java文件:

project clean will remove added java

所以,也说明了此法是不可行的。

需要想别的办法把class添加进来。

12.再去尝试,从libs导入class试试能否识别:

import from libs for classes

from file system import classes

import all classes into libs

结果代码:

ExprSimpleLexer lexer = new ExprSimpleLexer(cs);

还是无法识别对应的类,即使去试import,也找不到合适的。

13.难道需要另外想办法,把classes制作成jar包,然后导入到libs中?

最终,是通过,把对应的java源码,都导入到对应的当前项目的src文件夹下面:

import all java src into src dir

然后Eclipse自动编译后,bin下面也就有了对应的class了,然后再写测试代码,就可以找到对应的类了:

import src then can auto compile class and recognize

 

【总结】

如此,才最终,真正实现了最终目的,即使得当前项目可以引用别的类库,

原本是想要将别的一个class导入到当前项目中,结果证实,貌似不可行,

而最终是通过将对应的.java源码导入进来,基于Eclipse的ADT会自动编译生成对应的class的,然后项目中才得以引用对应的类。

转载请注明:在路上 » 【已解决】Android的ADT中导入Java的class文件

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 真是服了
    1118年前 (2015-12-07)回复
  2. 可以说讲了这么一大堆,都是废话,有源码谁闲的蛋疼去导入.class文件啊
    玩玩10年前 (2014-05-15)回复
86 queries in 0.160 seconds, using 22.17MB memory