2012-07-10 65 views
-1

WebView documentation,我想注入公共Java功能webView和使用JavasSript,當該功能是在在活動校驗錯誤開始

public String myfunc(){ 
//.... 
} 

它的工作原理, 形式稱之爲但使用throws時關鍵字會造成致命錯誤。

這是我的完整代碼:

package com.arad.test1; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.Window; 
import android.webkit.WebSettings.PluginState; 
import android.webkit.WebView; 
import android.widget.Toast; 

import com.arad.test1.model.test; 
import com.fasterxml.jackson.core.JsonGenerationException; 
import com.fasterxml.jackson.databind.JsonMappingException; 
import com.fasterxml.jackson.databind.ObjectMapper; 

public class Test1Activity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.test); 
     final WebView myWebView = (WebView) findViewById(R.id.webView1); 
     myWebView.getSettings().setJavaScriptEnabled(true); 
     myWebView.getSettings().setPluginState(PluginState.ON); 
     myWebView.addJavascriptInterface(this, "appConnector"); 
     try { 
      myWebView.loadDataWithBaseURL(
        "file:///android_asset/", 
        convertStreamToString(getAssets().open(
          "templates/test.html")), "text/html", "utf-8", ""); 
     } catch (IOException e) { 
      Log.e("Test1", e.getMessage()); 
     } 
    } 

    public String load() { 
     return generateJsonFromClass(); 
    } 

    private String generateJsonFromClass() { 
     try { 
      ObjectMapper mapper = new ObjectMapper(); 
      test t = new test(); 
      String result = mapper.writeValueAsString(t); 
      return result; 
     } catch (JsonGenerationException e) { 
      Log.e("Test1", e.getMessage()); 
      return "JsonGenerationException"; 
     } catch (JsonMappingException e) { 
      Log.e("Test1", e.getMessage()); 
      return "JsonMappingException"; 
     } catch (IOException e) { 
      Log.e("Test1", e.getMessage()); 
      return "IOException"; 
     } 
    } 

    private static String convertStreamToString(InputStream is) { 

     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
     StringBuilder sb = new StringBuilder(); 

     String line = null; 
     try { 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return sb.toString(); 
    } 
} 

這是DDMS日誌:

07-10 10:02:42.183: E/dalvikvm(20521): Could not find class 'com.fasterxml.jackson.databind.ObjectMapper', referenced from method com.arad.test1.Test1Activity.generateJsonFromClass 
07-10 10:02:42.183: W/dalvikvm(20521): VFY: unable to resolve new-instance 28 (Lcom/fasterxml/jackson/databind/ObjectMapper;) in Lcom/arad/test1/Test1Activity; 
07-10 10:02:42.183: D/dalvikvm(20521): VFY: replacing opcode 0x22 at 0x0000 
07-10 10:02:42.183: W/dalvikvm(20521): VFY: unable to resolve exception class 26 (Lcom/fasterxml/jackson/core/JsonGenerationException;) 
07-10 10:02:42.183: W/dalvikvm(20521): VFY: unable to find exception handler at addr 0xf 
07-10 10:02:42.183: W/dalvikvm(20521): VFY: rejected Lcom/arad/test1/Test1Activity;.generateJsonFromClass()Ljava/lang/String; 
07-10 10:02:42.183: W/dalvikvm(20521): VFY: rejecting opcode 0x0d at 0x000f 
07-10 10:02:42.183: W/dalvikvm(20521): VFY: rejected Lcom/arad/test1/Test1Activity;.generateJsonFromClass()Ljava/lang/String; 
07-10 10:02:42.212: W/dalvikvm(20521): Verifier rejected class Lcom/arad/test1/Test1Activity; 
07-10 10:02:42.212: W/dalvikvm(20521): Class init failed in newInstance call (Lcom/arad/test1/Test1Activity;) 
07-10 10:02:42.223: D/AndroidRuntime(20521): Shutting down VM 
07-10 10:02:42.223: W/dalvikvm(20521): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
07-10 10:02:42.322: E/AndroidRuntime(20521): FATAL EXCEPTION: main 
07-10 10:02:42.322: E/AndroidRuntime(20521): java.lang.VerifyError: com/arad/test1/Test1Activity 
07-10 10:02:42.322: E/AndroidRuntime(20521): at java.lang.Class.newInstanceImpl(Native Method) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at java.lang.Class.newInstance(Class.java:1319) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.os.Looper.loop(Looper.java:137) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at java.lang.reflect.Method.invokeNative(Native Method) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at java.lang.reflect.Method.invoke(Method.java:511) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
07-10 10:02:42.322: E/AndroidRuntime(20521): at dalvik.system.NativeStart.main(Native Method) 
07-10 10:02:42.352: I/dalvikvm(20521): threadid=3: reacting to signal 3 
07-10 10:02:42.432: I/dalvikvm(20521): Wrote stack traces to '/data/anr/traces.txt' 
07-10 10:02:42.632: I/dalvikvm(20521): threadid=3: reacting to signal 3 
07-10 10:02:42.652: I/dalvikvm(20521): Wrote stack traces to '/data/anr/traces.txt' 
07-10 10:02:43.122: I/dalvikvm(20521): threadid=3: reacting to signal 3 
07-10 10:02:43.213: I/dalvikvm(20521): Wrote stack traces to '/data/anr/traces.txt' 

如何解決這一問題?

+1

從錯誤日誌看你的庫文件夾名稱庫,該問題與在運行時丟失的類來完成,而什麼都沒有做與您使用的' WebView'。它甚至沒有那麼遠。它無法加載你的類,因爲它找不到'com.fasterxml.jackson.databind。*'。 – aroth 2012-07-10 04:37:52

+0

這是我的項目結構,參考項目,我錯過了什麼? [鏈接] http://i.imgur.com/oAb76.png?1 – 2012-07-10 04:53:08

回答