2016-05-23 3 views
3

У меня есть два проекта: Test1 и Test2. Тест 2 имеет скрипт в папку тест проекта:netbeans project reference issues

this.getClass().getClassLoader().getResource("").getPath()  

результат является:

/home/andy/Documents/Project/Test2/build/classes/ 

Когда Test2 добавил Test1 в время компиляции библиотеки:

this.getClass().getClassLoader().getResource("").getPath() 

результат является:

/home/andy/Documents/Project/Test1/build/classes/ 

Так что мой вопрос:
Почему путь еще не закончился /home/andy/Documents/Project/Test2/build/classes/ после того, как я добавил Test1 во библиотеки компиляции?

ответ

0

Вы запрашиваете загрузчик классов, в частности загрузчик классов, который использовался для загрузки Test2.class. После этого вы попросите classloader получить вам ресурс. Поведение по умолчанию для загрузчиков классов - это запрос родительского загрузчика классов, если он может разрешить запрос. Поскольку у вас не будет родительского загрузчика классов, будет использоваться загрузчик классов bootstrap вашего jvm. Когда вы запрашиваете ресурс с пустым именем, он может удовлетворить это с помощью первой записи пути к классам. В зависимости от того, как NetBeans настраивает путь к классам, это может быть либо Test1, либо Test2.

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

+0

Я изменил на test2.Main.class.getClassLoader(). GetResource (""). GetPath(); результат все тот же:/home/andy/Documents/Project/Test1/build/classes /, а test2 - это имя пакета, а Main - имя класса, как его исправить? –

+0

У кого-нибудь есть идея? Является ли это ошибкой в ​​NetBeans 8.1? Я должен сделать ссылку на проект, иначе очень сложно импортировать разные * .jar, поэтому, пожалуйста, помогите мне, THX! –

+0

Любой может помочь? –

Смежные вопросы