java.lang.NoClassDefFoundError: org.apache.mina.transport.socket.nio.NioSocketConnector问题解决?

在升级Android SDK至r22版本后,遇到Java运行时NoClassDefFoundError问题,涉及mina框架和slf4j库。通过新建工程并转移原有项目内容解决了问题。错误可能与SDK更新引入的Android Private Libraries有关。调试过程中发现mina缺少slf4j依赖,添加相应jar文件后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景和环境:
更新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 新建工程,再进行拷贝。

 
其实到现在我还是不知道为啥会报错,不过这个探索过程还是值得小结下,从简单入手,复杂问题简单化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值