powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / NoClassDefFoundError
7 сообщений из 7, страница 1 из 1
NoClassDefFoundError
    #33350792
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при выполнении

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
NoClassDefFoundError
    #33350828
pvo99i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
name=Welcome попробуй
...
Рейтинг: 0 / 0
NoClassDefFoundError
    #33351042
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда вместо
Exception in thread "main" java.lang.NoClassDefFoundError: Welcome/class (wrong name : Welcome)
выдает
Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/Object
...
Рейтинг: 0 / 0
NoClassDefFoundError
    #33351393
pvo99i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажи код, так не понятно.

и еще - вот тут написано про класслоадеры. Почитай, может проблема разрешится.
...
Рейтинг: 0 / 0
NoClassDefFoundError
    #33351706
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
NoClassDefFoundError
    #33351914
pvo99i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема возникает из-за:

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


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