Java NoClassDefFoundError - PullRequest
       7

Java NoClassDefFoundError

0 голосов
/ 13 марта 2010

Здесь я загружаю исходный код веб-страницы и сохраняю его в текстовом файле. Затем я читаю этот файл и сопоставляю его с регулярным выражением для поиска конкретной строки.

Нет ошибки компилятора.

Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/CharSequence

Может кто-нибудь сказать мне, где я не прав.

java version "1.3.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_01)
Java HotSpot(TM) Client VM (build 1.3.1_01, mixed mode)

import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WebDownload
{
  public void getWebsite()
   {
     try{
    URL url=new URL("www.gmail.com");// any URL can be given
    URLConnection urlc=url.openConnection();
    BufferedInputStream buffer=new BufferedInputStream(urlc.getInputStream());
    StringBuffer builder=new StringBuffer();
    int byteRead;
    FileOutputStream fout;
    StringBuffer contentBuf = new StringBuffer();

    while((byteRead=buffer.read())  !=-1)
    {

        builder.append((char)byteRead);



         fout = new FileOutputStream ("myfile3.txt");


            new PrintStream(fout).println (builder.toString());

            fout.close();   


    } 
    BufferedReader in = new BufferedReader(new FileReader("myfile3.txt"));
String buf = null;
while ((buf = in.readLine()) != null) {
 contentBuf.append(buf);contentBuf.append("\n");
}
in.close();
Pattern p = Pattern.compile("<div class=\"summarycount\">([^<]*)</div>");
Matcher matcher = p.matcher(contentBuf);
 if(matcher.find())
     {
    System.out.println(matcher.group(1));
     }
  else

     System.out.println("could not find");
  }
     catch(MalformedURLException ex) {
    ex.printStackTrace();
    }
    catch(IOException ex){
      ex.printStackTrace();
     }



  }
  public static void main(String [] args)
   {
     WebDownload web=new WebDownload();
   web.getWebsite();
  }
}

Ответы [ 5 ]

2 голосов
/ 14 марта 2010

Обратите внимание, что обычно вы можете обратиться к javadoc, чтобы определить, доступен ли API в используемой версии Java. Например, Javadoc для CharSequence сообщает «С: 1,4».

Обычно я сохраняю ссылку на последний выпущенный API javadocs , легко доступный.

1 голос
/ 13 марта 2010

Возможно, вы используете 1.3 JVM для выполнения кода? Это объясняет ошибку, если код был скомпилирован с совместимостью 1.3 (или ниже), но с библиотеками JRE 1.4 или новее.

1 голос
/ 13 марта 2010

Из API :: java.lang.NoClassDefFoundError - Выдается, если виртуальная машина Java или экземпляр ClassLoader пытается загрузить определение класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием новое выражение) и определение класса не найдено.

Как это звучит, вам не хватает необходимых библиотек или их нет в вашей переменной PATH. Я бы проверил там сначала.

Дополнительно проверьте JAVA_HOME \ lib для классов, которые вы импортируете.

0 голосов
/ 25 августа 2010

Интерфейс CharSequence существует только с Java 1.4, но вы используете Java 1.3. Этот интерфейс используется классом StringBuffer, который вы используете в своем коде. Текущая версия Java - Java 6 - я бы предложил обновить, если вы можете.

0 голосов
/ 13 марта 2010

Похоже, вы запускаете свое приложение с Java 1.3. Можете ли вы набрать java -version и вставить вывод? На чем ты? Как у вас работает приложение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...