Динамическая загрузка класса в Java с другим именем пакета

Можно ли загрузить класс в Java и «подделать» имя пакета / каноническое имя класса? Я попытался сделать это очевидным способом, но я получаю сообщение «имя класса не соответствует» вClassDefNotFoundException.

Причина, по которой я это делаю, заключается в том, что я пытаюсь загрузить API, который был написан в пакете по умолчанию, чтобы я мог использовать его напрямую, без использования отражения. Код будет скомпилирован с классом в структуре папок, представляющей пакет и импорт имени пакета. то есть:

./com/DefaultPackageClass.class
// ...
import com.DefaultPackageClass;
import java.util.Vector;
// ...

Мой текущий код выглядит следующим образом:

public Class loadClass(String name) throws ClassNotFoundException {
    if(!CLASS_NAME.equals(name))
            return super.loadClass(name);

    try {
        URL myUrl = new URL(fileUrl);
        URLConnection connection = myUrl.openConnection();
        InputStream input = connection.getInputStream();
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int data = input.read();

        while(data != -1){
            buffer.write(data);
            data = input.read();
        }

        input.close();

        byte[] classData = buffer.toByteArray();

        return defineClass(CLASS_NAME,
                classData, 0, classData.length);

    } catch (MalformedURLException e) {
        throw new UndeclaredThrowableException(e);
    } catch (IOException e) {
        throw new UndeclaredThrowableException(e); 
    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос