Есть ли способ заставить Java распознавать неназванный пакет из именованного пакета? - PullRequest
0 голосов
/ 24 февраля 2011

Чтобы завершить проект, мне нужно изменить файл класса в именованном пакете.

Я не могу поместить его в неназванный пакет;он импортируется из других классов.

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

Моя цель - заставить javac любыми средстваминеобходимо разрешить импорт из неназванного пакета.Это плохая практика, но у меня нет другого выбора.

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

Ответы [ 3 ]

2 голосов
/ 27 февраля 2011

Я решил проблему.Я скомпилировал программу, сделав базовые определения всех классов и методов, которые она импортировала в именованном пакете, а затем использовал программу Classeditor для редактирования имен / путей пакетов после компиляции.

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

как мне поместить все импортированные классы в пакет БЕЗ их перекомпиляции

Вы не можете , имя пакета является частьюполное имя класса и присутствует в самом файле класса.

Вы можете использовать рефлексию для доступа к этим классам, это уродливое решение для уродливой проблемы.

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

Я считаю, что до java 1.4 можно было импортировать классы из неназванного пакета в классы в именованных пакетах.Однако это больше не работает.

То есть, если у вас есть два класса, подобных этому:

File A.java
import b.B; // <-- This is ok
class A {
...
}

File B.java
package b;
import A; // <-- Does not compile after 1.4
class B {
...
}

, тогда можно будет ссылаться на класс B из класса A, но не другойпуть.Вы не можете импортировать классы из неназванного пакета.

Вы можете попробовать скомпилировать свои классы, используя JDK 1.3.Они по-прежнему будут работать в JDK 1.4 и выше.

...