2

我对 android 很陌生,当我尝试运行我的 android 项目时出现此错误。

java.lang.NoClassDefFoundError: org.json.simple.JSONValue
E/AndroidRuntime(  502):    at in.juspay.PaymentService.initOrder(PaymentService.java:165)
E/AndroidRuntime(  502):    at com.example.HelloMobile.LoginActivity$1.onClick(LoginActivity.java:124)
E/AndroidRuntime(  502):    at android.view.View.performClick(View.java:2485)
E/AndroidRuntime(  502):    at android.view.View$PerformClick.run(View.java:9080)
E/AndroidRuntime(  502):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(  502):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(  502):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  502):    at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(  502):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  502):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(  502):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(  502):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(  502):    at dalvik.system.NativeStart.main(Native Method)

我有由我编写并使用 maven 工具构建的 jar 文件。当我做 :

mvn clean install

那里没有错误并且一切正常文件,但是当我将 jar 添加到我的 android 项目并尝试运行时,我收到了这个错误。

pom.xml这是我从文件中获取的 Maven 依赖项:

<dependencies>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
    </dependency>

    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.7</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>3.0.4</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
    </dependency>

</dependencies>

不知道为什么会发生错误。

谢谢你的帮助。

4

1 回答 1

1

您在“mvn clean install”之后获得的 jar 仅包含您项目中的类。这些依赖 jar 中的类不包括在内,因此您得到了 NoClassDefFoundError 异常。

如果你真的需要构建一个包含所有依赖项的胖 jar,我会建议使用 maven-assembly-plugin。以下是一个工作示例(将其放在您的 pom.xml 中):

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <appendAssemblyId>false</appendAssemblyId>
            </configuration>
            <!-- This will bind assembly:make-assembly to the package phase -->
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

获取jar(在目标目录中)后,您可以运行“jar -tf theJarFile”来检查该类是否包含在内。

于 2013-01-25T08:14:14.050 回答