尝试在空对象引用上调用虚拟方法“java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String)”

问题描述 投票:0回答:1

我正在使用给定的代码进行网页抓取。基本上,它是一个网页抓取应用程序,用户通过提供特定数据来搜索目标。此代码中使用了 webview。需要解决列出的错误才能使代码正常工作。有人可以告诉我如何解决这个问题吗?

错误是: 引起原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String)” 在 com.education.saifgroupgrabber.WebScraper.onCreate(WebScraper.java:225)

   public class WebScraper extends AppCompatActivity {

public static ArrayList<LeadsNumbersListModel> contactsData = new ArrayList<>();
public WebView h;
public volatile boolean i = false;
public TextView j;
public TextView k;
public TextView l;
public String m = "";
public ArrayList<String> n = new ArrayList<>();
public int o = 0;
public SharedPreferences p;
public boolean q = true;
public String r = "";
public String s = "";
public String t = "";
public boolean u = true;
public String v = "";
public String w = "";
private PowerManager.WakeLock wl;
public int x = 0;
public boolean y = false;
public final Thread z = new Thread(new Runnable() {
    public void run() {
        while (!WebScraper.this.i) {
            for (int i = 0; i < 20 && !WebScraper.this.i; i++) {
                int finalI = i;
                WebScraper.this.h.post(new Runnable() {
                    public void run() {
                        try {
                            WebScraper.this.h.loadUrl(ChromeHelper.HeaderClick(finalI));
                        } catch (Exception unused) {
                        }
                    }
                });
                WebScraper webScraper = WebScraper.this;
                if (webScraper.y) {
                    webScraper.y = false;
                    try {
                        Thread.sleep(5500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                try {
                    Thread.sleep(5500);
                } catch (InterruptedException e2) {
                    e2.printStackTrace();
                }
                WebScraper.this.runOnUiThread(new Runnable() {
                    public void run() {
                        WebScraper.this.process44();
                    }
                });
                if (i >= 19) {
                    WebScraper.this.h.post(new Runnable() {
                        public void run() {
                            try {
                                WebScraper.this.h.loadUrl(ChromeHelper.NextClicker);
                                WebScraper.this.h.clearCache(true);
                            } catch (Exception unused) {
                            }
                        }
                    });
                    try {
                        Thread.sleep(4000);
                    } catch (InterruptedException e3) {
                        e3.printStackTrace();
                    }
                    WebScraper.this.h.post(new Runnable() {
                        public void run() {
                            try {
                                WebScraper webScraper = WebScraper.this;
                                webScraper.w = webScraper.h.getUrl();
                            } catch (Exception unused) {
                            }
                        }
                    });
                }
            }
        }
        WebScraper.deleteCache(WebScraper.this.getApplicationContext());
        WebScraper.this.startActivity(new Intent(WebScraper.this, 
   LeadsContactsActivity.class));
        WebScraper.this.finish();
    }
});

public class MyWebViewClient extends WebViewClient {
    private int running = 0;

    public MyWebViewClient() {
    }

    public void onPageFinished(WebView webView, String str) {
        int i = this.running - 1;
        this.running = i;
        if (i == 0) {
            WebScraper webScraper = WebScraper.this;
            if (webScraper.q) {
                webScraper.q = false;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        WebScraper.this.z.start();
                    }
                }, 1000);
                WebScraper.this.j.setText("Extracting Leads...");
            }
        }
    }

    public void onPageStarted(WebView webView, String str, Bitmap bitmap) {
        this.running = Math.max(this.running, 1);
    }

    public boolean shouldOverrideUrlLoading(WebView webView, String str) {
        this.running++;
        if (!str.startsWith("source://")) {
            return false;
        }
        try {
            WebScraper.this.sourceReceived(URLDecoder.decode(str, "UTF-8").substring(9));
        } catch (UnsupportedEncodingException unused) {
        }
        return true;
    }
}

public static void deleteCache(Context context) {
    try {
        deleteDir(context.getCacheDir());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static boolean deleteDir(File file) {
    if (file != null && file.isDirectory()) {
        for (String file2 : file.list()) {
            if (!deleteDir(new File(file, file2))) {
                return false;
            }
        }
        return file.delete();
    } else if (file == null || !file.isFile()) {
        return false;
    } else {
        return file.delete();
    }
}

public void PremiumPlan() {
    new AlertDialog.Builder(this).setTitle((CharSequence) "Premium 
  Feature").setMessage((CharSequence) "You can extract only five leads in Trial Plan for unlimited 
   leads please purchase premium").setCancelable(false).setPositiveButton((CharSequence) "OK", 
   (DialogInterface.OnClickListener) new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialogInterface, int i) {
            WebScraper.this.i = true;
            WebScraper.this.k.setText("Stopping Please Wait...");
            WebScraper webScraper = WebScraper.this;
            webScraper.k.setTextColor(webScraper.getResources().getColor(R.color.main_red));
            WebScraper.this.l.setText("");
        }
    }).show();
}

public void onBackPressed() {
    super.onBackPressed();
}

public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    this.wl = ((PowerManager) getSystemService(Context.POWER_SERVICE)).newWakeLock(26, 
    "FASTY:SCREEN_LOCK");
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        this.m = extras.getString("SEARCH");
    }
    setContentView((int) R.layout.activity_web_scraper);
    contactsData.clear();
    setTitle("B2B Leads Extractor");
    try {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    } catch (NullPointerException unused) {
        Log.e("SearchActivity Toolbar", "You have got a NULL POINTER EXCEPTION");
    }
    this.p = getSharedPreferences(PreferencesConstants.APP_MAIN_PREF, 0);
    this.j = (TextView) findViewById(R.id.progressTV);
    this.k = (TextView) findViewById(R.id.tv);
    this.l = (TextView) findViewById(R.id.tv2);
    WebView webView = (WebView) findViewById(R.id.wv);
    this.h = webView;
    webView.getSettings().setJavaScriptEnabled(true);
    this.h.getSettings().setBuiltInZoomControls(false);
    this.h.getSettings().setSupportZoom(true);
    this.h.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
    this.h.setWebViewClient(new MyWebViewClient());
    this.h.setWebChromeClient(new WebChromeClient() {
    });
    this.h.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1; Win64; x64) 
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36");
    WebView webView2 = this.h;
    StringBuilder u2 = this.u("https://www.google.com/search?tbm=lcl&q=");
    u2.append(this.m);
    webView2.loadUrl(u2.toString());
    this.v = "https://www.google.com/search?tbm=lcl&q=" + this.m;
    this.j.setText("Please Wait\nLoading Search...");
    this.wl.acquire();
}

private StringBuilder u(String s) {
    return null;
}

public void onDestroy() {
    super.onDestroy();
    this.wl.release();
}

public void process44() {
    try {
        viewSource();
    } catch (Exception e) {
        Toast.makeText(this, "Error:" + e, Toast.LENGTH_LONG).show();
    }
     }

帮助解决此错误:

引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String)” 在 com.education.saifgroupgrabber.WebScraper.onCreate(WebScraper.java:225)

java android google-chrome web-scraping
1个回答
0
投票
StringBuilder u2 = this.u("https://www.google.com/search?tbm=lcl&q=");
u2.append(this.m);
u2 assigned by the return value of u();and u() return null.

在这儿吗?

© www.soinside.com 2019 - 2024. All rights reserved.