转自http://www.verydemo.com/demo_c89_i39306.html

我也被外部.jar资源无法访问的问题纠缠了一段时间,运行时,找是找不到那些类,加载失败,今天看了下面的文章,试了一下,可以运行了,感觉还不错,特地放上来小记一下:


Class File Editor

Source not found

The JAR of this class file belongs to container 'Android' which does not allow modifications to source attachments on its entries.

因此按照如下操作添加对应的源代码:

选择workspace 里面的项目,点击右键--->Build Path-->configure build path -->liberaries-->选择一个jar包--->点击左侧的展开三角按钮--->

展开后选择Source attachment --->点击右侧的 Edit 按钮--->弹出对话框,并选择External File---->找到指定的源文件压缩包。或者可使用外部源文件目录。点击OK。

进去以后发现还是不能查看,同样的提示!

仔细读英文的后半部分,在libs中直接引用的第三方jar包不让其做任何修改。包括添加源文件参看。

因此在android工程下新建一个lib目录,将jar包从libs转移到lib中。然后重复以上过程。

结果就可以查看了!不过一运行你的程序,马上报错无法找到class的错误。 = =! 死胡同了~

看来只能将第三方jar放到libs了。

有的牛人这样解决了:

In order to link thesources and javadocto a .jar library that is automatically linked by Eclipse you have to do the following.

  1. Place all three .jar files in the libs folder.
  2. Create.propertiesfile in the libs folder with the name of the library .jar (see example).
  3. Specify the relative paths to the sources and javadoc .jar in the .properties file.
  4. Closeand re-open the Eclipse project! Optionally refresh the project.
  5. Select an object of the linked library in the source code.
  6. Open the Javadoc view in Eclipse to check the documentation (see screenshot).
  7. Open the source code declaration (default shortcut:F3) of the selected object.

Example:GSON library

/libs/gson-2.2.2.jar /libs/gson-2.2.2.jar.properties /libs/gson-2.2.2-javadoc.jar /libs/gson-2.2.2-sources.jar

Contents of gson-2.2.2.jar.properties

src=gson-2.2.2-sources.jar doc=gson-2.2.2-javadoc.jar

You can of course move the javadoc and sources .jar into other folders and specify relative paths. That's up to you.

但是遗憾的是,弄了半天都没能解决。可能也跟我用的第三方的jar包不规范的原因,而且我没有doc文件。


最终,我想到了一个解决办法:

新建一个lib目录

将需要的jar包全部拷贝到该目录下

依次对每个jar包执行 上面绿色 部分操作

完成后右键lib目录,点击build path--> use as source folder

即可解决查看源码的问题,也可使程序正常执行。


下面是摘自网络

AndroidEclipseJNI调用.so文件加载问题

背景:对于Android工程 Eclipse里编译好的.so文件放到 libs\armeabi下以后,这样.so文件就可以打包到apk文件里,在apk装到手机上以后 在libs\armeabi下的.so文件应该就会解压到/data/data/这里是你project的包名(比如com.first.second)/lib下。

问题:写了个测试的android JNI app,.so已经放到了libs\armeabi下而且从编译的apk里也能看到.so已经打包进去(解压apk文件,里边应该有lib文件夹)但是在/data/data/com.test.test/lib下就是没有相应的.so文件

解决方法:原来是因为我的.so没有按照android标准命名,.so的名字必须有'lib'前缀否则apk解压/安装到手机的时候不会把libs\armeabi下的.so拷贝到/data/data/com.test.test/lib下。原来我用的so名字是JNITest.so,改为libJNITest.so后一切正常。

补充:
a) 用loadLibrary调用的时候需要去掉lib前缀System.loadLibrary("JNITest");
b) 用load调用的时候需要写全路径名 且不能去掉lib前缀 因为这里是当成一个普通文件读取的System.load("/data/data/com.test.test/libJNITest.so");



更多相关文章

  1. Android实现文件的复制
  2. Android(安卓)使用obb扩展App
  3. Android23_网络存储之HttpClient
  4. Android图片路径与Uri相互转化
  5. Android(安卓)打包, 不同渠道使用 不同的资源文件
  6. Android中字符设备驱动和应用实例(一)——驱动部分
  7. 新博andorid 初中级考试评测以及答案-------小林老师出的试卷
  8. Android文件、内存、SDCard管理常用工具类、方法
  9. Android(安卓)- TextView 实现部分文本点击事件

随机推荐

  1. 【JavaScript】离线应用与客户端存储
  2. javascript入门笔记(1)——变量和计算
  3. js关于Function.prototype.bind
  4. RichFaces 3.3.3 和 JSF 2.0
  5. js中ajax获取json数据遍历提示undefined
  6. 在单选按钮上选中/取消选中,加载/隐藏部分
  7. javascript 的MD5代码备份,跟java互通
  8. 使用AngularJS隐藏滚动div
  9. 简单实现一个文件上传的进度条
  10. 如何在当前视图中始终保持水平底部滚动条