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

エラーはなく、すべてがファイルで機能しますが、Androidプロジェクトにjarを追加して実行しようとすると、このエラーが発生します。

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

「mvncleaninstall」の後に取得した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 に答える