我如何使用maven,继续获取noClassDefFoundError

时间:2014-03-08 05:15:22

标签: maven maven-plugin android-maven-plugin

maven尝试添加依赖项的新手

  <dependency>
   <groupId>com.koushikdutta.ion</groupId>
   <artifactId>ion</artifactId>
   <version>1.2.4</version>
</dependency>

然后我更新了项目,并在maven依赖项文件夹中看到了必要的jar文件

那么在我的活动中我想使用Ion,所以我称之为

try {
        Ion.with(mContext, uri).asBitmap().setCallback(new FutureCallback<Bitmap>() {

            @Override
            public void onCompleted(Exception e, Bitmap result) {

                try {
                    if (e != null) {
                        throw e;
                    }

                    setImage(v, result);

                }
                catch (Exception ex) {
                    e.printStackTrace();
                }

            }
        });
    }
    catch (Exception ex) {
        ex.printStackTrace();
    }

我进行必要的导入,文件中没有错误但是在运行时

    03-07 21:05:40.492: E/AndroidRuntime(778): FATAL EXCEPTION: pool-1-thread-2
03-07 21:05:40.492: E/AndroidRuntime(778): java.lang.NoClassDefFoundError: com.koushikdutta.ion.Ion

我缺少什么让这项工作?

2 个答案:

答案 0 :(得分:1)

你如何执行该计划?从maven?从命令行?听起来执行环境与maven POM文件中的编译时环境不共享相同的类路径。

答案 1 :(得分:1)

首先,我可以确认依赖项确实包含缺少的类:

这并不奇怪,因为您声明代码已编译。问题是运行时的类路径管理。

选项1:使用Maven启动应用

使用exec plugin从Maven中运行代码。这将根据您在POM中声明的依赖关系设置程序类路径:

选项2:创建可执行jar

一个了解它的依赖关系的独立jar(没有POM):

有关jar内部的更多详细信息,我建议您阅读jar spec,特别是“Main-Class”和“Class-Path”属性。