问题背景和环境:
更新sdk和adt到最新版本即android sdk r22版本之后,今天运行程序时既然一直报如上错误,网上查遍资料未果,最后只好用自己以前遇到过同样问题解决方案,就是新建一个工程,将当前项目中的内容一项项的拷贝到新工程里面去,结果一运行就OK了。后群里有人遇到同样问题,原因是SDK更新后添加了一个Android Private Libraries 结构。具体参考:
http://mobile.51cto.com/abased-394640.htm
中间过程病急乱投医,以为是更新SDK后,使用mina框架,可能其中某部分也需要更新(其实仔细想想是不太可能的),于是当时进行了如下调试过程:
1、java 中调试 mina导包问题:
mina包名:mina-core-2.0.7.jar
测试代码:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
NioSocketConnector ns = new NioSocketConnector();
}
}
运行报错:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.mina.core.service.AbstractIoService.<clinit>(AbstractIoService.java:64)
at Test.main(Test.java:7)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
明显没有添加slf4j包,
去网站下载包:
http://www.slf4j.org/
解压后将slf4j-api-1.7.5.jar和slf4j-simple-1.7.5.jar导入Java工程中,再次运行就OK!
2、android 中调试mina导包问题:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
NioSocketConnector n = new NioSocketConnector();
}
});
}
}
libs目录如下:
点击后也没报如上错误,当时就感觉奇怪了,但之前的工程一运行就会出现如上错误,搜索半天未果,结果只好使用以前自己留给自己的经验
http://blog.youkuaiyun.com/sunnyfans/article/details/7580831 新建工程,再进行拷贝。
其实到现在我还是不知道为啥会报错,不过这个探索过程还是值得小结下,从简单入手,复杂问题简单化。