getClass () .getClassLoader () является пустым, почему?

У меня есть некоторый код, который звонит..

x = getClass().getClassLoader();

Это возвращает пустой указатель все же.

Когда я запускаю тот же код не с Eclipse, но командной строки, это возвращает classloader.

Я могу взломать код, чтобы сделать это...

if (getClass().getClassLoader() == null)
{
 x = ClassLoader.getSystemClassLoader().getSystemResourceAsStream( loadedPropFileName );
} 

оба компилируются и выполняются с той же JVM. (Я на 99,99% уверен).

У кого-либо есть какие-либо идеи, почему первое действительно ли возврат аннулировало бы для classloader?

Править:

Мой вопрос, делает "У любого есть любые идеи, почему тот же класс возвратил бы пустой указатель при запуске через Eclipse и загрузчик класса при загрузке из командной строки".

Спасибо за совет, что загрузчик Bootstap должен загружать класс в Eclipse. Я понятия не имею, почему это происходит все же.

35
задан Gábor Lipták 27 March 2015 в 07:57
поделиться

3 ответа

Ссылаясь на документ API :

Некоторые реализации могут использовать null для представляют собой загрузчик классов начальной загрузки. Этот метод вернет null в таком реализации, если этот класс был загружается загрузчиком классов начальной загрузки.

34
ответ дан 27 November 2019 в 07:16
поделиться

«Этот метод вернет значение null в таких реализациях, если этот класс был загружен загрузчиком классов начальной загрузки». http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html#getClassLoader ()

5
ответ дан 27 November 2019 в 07:16
поделиться

One thing is certain, Eclipse has a deeper and more complicated classloader setup than when you are running from the command line. If you are seeing differences in how a class's classloader appears in one versus the other then that is a pretty likely reason.

I'm not knowledgeable in what exactly Eclipse is doing but I think it very likely that your class is not being loaded by the bootstrap classloader when being run from Eclipse but that Eclipse is attempting to make it seem that way.

The bootstrap ClassLoader is static once the application is bootstrapped and you can't add jars or classes to it later unless Eclipse has overridden the implementation... in which case, there's yet another possible explanation.

3
ответ дан 27 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: