2013-01-25 118 views
2

我對android非常陌生,當我嘗試運行我的android項目時出現此錯誤。Android沒有找到JSONValue類

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) 

我有我寫的jar文件,並使用maven工具構建。當我這樣做:

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> 

不知道爲何出現錯誤。

感謝您的幫助。

回答

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> 

後你得到的罐子(在目標目錄),你可以運行「罐子-tf theJarFile」來檢查類是否包括在內。

+0

如何安裝'maven-assembly-plugin'? – sriram

+0

只需更新我的答案以包含安裝。 –

+0

謝謝。更新'pom.xml'文件後。我可以運行'mvn clean install'? – sriram