Отражение Java - PullRequest
       0

Отражение Java

0 голосов
/ 21 февраля 2011

Мой код дает мне java.lang.ClassNotFoundException: a.

Как мне создать этот класс?

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

Я этого не делал.Это дает ошибку, как это;java.lang.ClassNotFoundException: a Как я могу сгенерировать этот класс?

String line = reader.readLine();

Class<?> writeoutClass = Class.forName(line);

Класс, который вы вводите здесь, недоступен в classpath.

, если вы вводите какСтрока: helloasdjfhajsdklfhjh должен быть класс в пути к классу с таким же квалифицированным именем.

0 голосов
/ 28 февраля 2011

Вы действительно хотите создать новый класс во время выполнения?Если это так, то

  1. вам потребуется байт-код класса, а
  2. создайте новый ClassLoader, который может использовать этот байт-код для создания вашего класса.

Для 1: вы можете, например, взять байт-код из какой-либо базы данных или чего-то еще, если он уже существует.В противном случае вам нужно будет создать его - либо сгенерировав исходный код Java и скомпилировав его (что означает, что должен быть доступен компилятор Java), либо с помощью библиотеки разработки байт-кода, такой как ASM.(Конечно, вы также можете сделать это вручную, но я бы не рекомендовал это делать.)

Все зависит от того, что вы действительно хотите сделать.

Для 2: Создать подкласс изClassLoader и реализуйте метод findClass, чтобы получить байт-код и вызвать для вас defineClass.Создайте объект этого класса и передайте его в качестве аргумента методу Class.forName() или просто вызовите loader.loadClass(name).

Если ваш новый класс использует какие-либо другие классы, они должны быть загружены либо одним и тем жезагрузчик классов или любой загрузчик классов предков, в противном случае вы получите ошибки времени выполнения.

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