【问题】
之前折腾:
的过程中,需要把antlrworks生成好的java的class文件,都导入到当前的ADT中的Android项目中,以便后续代码能够调用到相应的类,进行后续处理。
【解决过程】
1.看到对应的android项目中,bin/classes下面,也有了项目本身的class文件了:
所以,就去试试,把上面自己的class,都导入到这里。
2. 先去建立一个文件夹ExprSimple:
3.然后填上对应的文件夹名称:
4.然后就可以创建好对应的文件夹了:
5.然后再去导入class:
6.从File System中导入:
7.输入路径,找到class文件:
8.然后就可以看到已经导入好的class文件了:
9.但是后来发现,导入的class,写代码,却无法识别:
10.发现了,貌似当前项目中所对应的文件夹antlrv3demo下面有R.class,而之前写android程序,是可以直接引用对应的R变量的。
但是注意到源码最开始是:
package com.mm.antlrv3demo;
所以,估计找不到已经导入的
ExprSimpleLexer.class
是因为没有包含到对应的antlrv3demo下面。
所以,就去手动全选ExprSimple下面的class,然后移动到:
com.mm.antlrv3demo
下面,变成:
然后再去试试代码能否识别到ExprSimpleLexer。
结果还是无法识别。
11.但是注意到,当前只能识别其项目自己的一些类:
而对应的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
中去:
结果还是代码无法检查到所需的类。
并且,另外发现了,通过Project->Clean,会清除掉,刚刚新添加进来的java文件:
所以,也说明了此法是不可行的。
需要想别的办法把class添加进来。
12.再去尝试,从libs导入class试试能否识别:
结果代码:
ExprSimpleLexer lexer = new ExprSimpleLexer(cs);
还是无法识别对应的类,即使去试import,也找不到合适的。
13.难道需要另外想办法,把classes制作成jar包,然后导入到libs中?
最终,是通过,把对应的java源码,都导入到对应的当前项目的src文件夹下面:
然后Eclipse自动编译后,bin下面也就有了对应的class了,然后再写测试代码,就可以找到对应的类了:
【总结】
如此,才最终,真正实现了最终目的,即使得当前项目可以引用别的类库,
原本是想要将别的一个class导入到当前项目中,结果证实,貌似不可行,
而最终是通过将对应的.java源码导入进来,基于Eclipse的ADT会自动编译生成对应的class的,然后项目中才得以引用对应的类。
转载请注明:在路上 » 【已解决】Android的ADT中导入Java的class文件