Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / NoClassDefFoundError / 7 сообщений из 7, страница 1 из 1
28.10.2005, 18:50
    #33350792
Gold Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
при выполнении

c = defineClass(name, data, 0, data.length);

где:
name = Welcome.class
data = масив типа byte[] содержащий этот класс

выдает сообщение

Exception in thread "main" java.lang.NoClassDefFoundError: Welcome/class (wrong name : Welcome) ......

помогите плз!!!!!!!
...
Рейтинг: 0 / 0
28.10.2005, 19:08
    #33350828
pvo99i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
name=Welcome попробуй
...
Рейтинг: 0 / 0
29.10.2005, 00:28
    #33351042
Gold Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
Тогда вместо
Exception in thread "main" java.lang.NoClassDefFoundError: Welcome/class (wrong name : Welcome)
выдает
Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/Object
...
Рейтинг: 0 / 0
29.10.2005, 20:51
    #33351393
pvo99i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
Покажи код, так не понятно.

и еще - вот тут написано про класслоадеры. Почитай, может проблема разрешится.
...
Рейтинг: 0 / 0
30.10.2005, 17:11
    #33351706
Gold Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
 import  java.util.Hashtable;
 import  java.sql.*;
 import  java.io.*;
 import  org.postgresql.largeobject.*;

/**
 * Загрузчик классов из базы данных
 */

  public   class  sqlClassLoader  extends  ClassLoader {

  Hashtable cache =  new  Hashtable();

  /**
   * Обращение к базе данных
   * @param name
   * @return */

     private   byte [] loadClassData(String name) {
     try  {
       byte  result[] =  null ;
      Connection conn =  DriverManager.getConnection(
      "jdbc:postgresql://127.0.0.1:5432/mydb",
       "user", "password");
      conn.setAutoCommit(false);
      LargeObjectManager lobj = ((org.postgresql.PGConnection)conn).getLargeObjectAPI();
      PreparedStatement stmt =
 	 conn.prepareStatement("SELECT object_data FROM client_object WHERE object_name = ?");

      stmt.setString( 1 , name);
      ResultSet rs = stmt.executeQuery();
       int  b =  0 ;

       if  (rs.next()){        
         int  oid = rs.getInt( 1 );

        LargeObject obj = lobj.open(oid, LargeObjectManager.READ);       
        result =  new   byte [obj.size()];
        obj.read(result,  0 , obj.size());        
        obj.close();
      }   
      rs.close();
      stmt.close();
      conn.close();
         return  result;
    }  catch  (SQLException e) {
      e.printStackTrace();
   }
 return   null ;
}

  /**
   * Получить класс из базы данных
   * @param name
   * @return * @throws ClassNotFoundException
   */
   public   synchronized   Class  loadClass(String name)  throws  ClassNotFoundException {
     // Получить класс из кэша
      Class  c;
     c = ( Class ) cache.get(name);
	 if  (c !=  null )  return  c;
    // В кэше класс не обнаружен -
    // ищем класс в базе данных
        byte [] data = loadClassData(name);
       
     if  (data ==  null ) {
       // Класс в базе данных не обнаружен -
       // выбрасываем исключение
           throw   new  ClassNotFoundException();
     }  else  {
      // Класс обнаружен
     c = defineClass(name, data,  0 , data.length);
      
      cache.put(name, c);
       return  c;
    }
  }

  /**
   * Статическая инициализация драйвера базы данных
   */
    static  {
     try  {
       Class .forName("org.postgresql.Driver");
    }  catch  (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }
}
...
Рейтинг: 0 / 0
30.10.2005, 22:50
    #33351914
pvo99i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
Проблема возникает из-за:

1. того, что переопределен не тот метод
2. нет обращения к родительскому загрузчику классов - отсюда проблемы с тем, что не находится java.lang.object

если сделать так, то все работает (метод loadClass можно прибить):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
	/**
	 * Получить класс из базы данных
	 * @param name
	 * @return * @throws ClassNotFoundException
	 */
	 protected   synchronized   Class  findClass(String name)  throws  ClassNotFoundException {
		// Получить класс из кэша
		 Class  result =  null ;
		result = ( Class ) cache.get(name);
		 if  ( result !=  null  ) {
			 return  result;
		}

		// Обращение к родительскому загрузчику.
		 try  {
			result = getParent().loadClass( name );
			 return  result;
		}  catch  ( ClassNotFoundException ex ) {
			// Не найдено - ищем сами.
		}
		// В кэше класс не обнаружен -
		// ищем класс в базе данных
		 byte [] data = loadClassData(name);
		
		 if  (data ==  null ) {
			// Класс в базе данных не обнаружен -
			// выбрасываем исключение
			 throw   new  ClassNotFoundException( name );
		}
		// Класс обнаружен
		result  = defineClass(name, data,  0 , data.length);
		 if  ( result ==  null  ) {
			 throw   new  ClassFormatError();
		}
		resolveClass( result );
		
		cache.put(name, result);
		 return  result;
	}

...
Рейтинг: 0 / 0
31.10.2005, 13:04
    #33352807
Gold Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NoClassDefFoundError
Огромный сенкс!!!!!
Оказалось 2. нет обращения к родительскому загрузчику классов - отсюда проблемы с тем, что не находится java.lang.object
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / NoClassDefFoundError / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]