Eclipse - Как "Изменить объявление пакета на..." по всему проекту
Я только что импортировал большое количество исходного кода в Eclipse, и в основном имя пакета больше недействительно (код был перемещен папками). Есть ли способ выбрать весь исходный код в Проводнике пакетов и нажать горячую клавишу, чтобы все объявления пакетов были правильно решены для меня? Я знаю, что вы можете сделать это с помощью импорта, выбрав источник и нажав ctl-shift-o, но также возможно для объявления пакета?
Обновление: Рефакторинг пакетов не работает, так как я не хочу менять имя или расположение пакетов, мне просто нужно настроить объявление пакета в исходном коде Java.
Ответы
Ответ 1
Если объявления пакетов больше недействительны, все такие недопустимые объявления появятся в представлении Problems
в Eclipse. Если вы не видите это представление, вы можете открыть его из окна- > Показать вид → Другое... → Проблемы (на вкладке "Общие" ).
Вы можете фильтровать проблемы в представлении "Проблемы" и исправить легко исправляемые, выбрав опцию Quick fix
в контекстном меню (доступно щелчком правой кнопки мыши). В вашем случае вы должны увидеть что-то похожее на скриншот, опубликованный ниже:
![Quick fix for incorrect packages]()
Применение параметров быстрого исправления тривиально, если вы знаете, какой из них правильный, вам придется либо изменить объявление пакета в классе, либо местоположение самого класса. К сожалению, нет возможности исправить проблему на нескольких устройствах за один раз; вам придется применить быстрое исправление для каждой проблемы.
Если вы хотите фильтровать проблемы только этого сорта, подумайте о настройке представления "Проблемы", чтобы показать все ошибки, которые текстовый контент "не соответствует ожидаемому пакету" в тексте ошибки, как показано на следующих снимках экрана:
![Configure Problem Contents]()
![Eclipse Configure Package Problems]()
Ответ 2
Для этой конкретной проблемы (которая обычно поставляется с автоматически сгенерированными файлами артефакта) я нашел аккуратное решение.
Итак, если проблема заключается в том, что объявления вашего пакета являются "package abc;" в 200 файлах, и вы хотите, чтобы это было "package com.aa.bb.cc.abc;"
Затем в eclipse Search- > File для "package abc;" в требуемой папке или pkg или всей рабочей области. Не выбирайте параметр "Поиск", но выберите "Заменить", а затем поставьте "package com.aa.bb.cc.abc;" когда он запрашивает замену после поиска.
Должен сделать трюк.
Ответ 3
Щелкните правой кнопкой мыши на пакете, выберите "Рефакторинг" > "Переименовать". Это обновит все исходные файлы с новым именем пакета.
Ответ 4
У меня была такая же проблема, поэтому я написал bash script, чтобы сделать это.
function java-package-update {
for path in $(find $1 -type f -name "*.java"); do
D=$(dirname $path);
F=$(basename $path);
P=$(echo $D|tr '/' '.');
if egrep -q '^\s*package\s*' $path; then
sed -i '' '/^\s*package\s*/s/^\(\s*package\s*\)[^;]*\(;.*\)/\1 '$P'\2/' $path;
else
echo >&2 "no package in $path";
fi;
done;
}
Используемая команда sed
- это одна из OSX. Если вы используете gnu sed, вам не нужен параметр '' paramater после -i
.
Просто вставьте его и запустите в каталоге, содержащем ваш источник. Сначала создайте резервную копию своего источника, если вы не очень храбры.
Пример:
$ cd /home/me/proj/fred/src
$ ls
com
$ cp -a com com.backup
$ java-package-update com
$ # fingers crossed
$ diff -ru com.backup com
Я действительно должен начать делать этот материал на более современном языке, таком как perl:)
Ответ 5
Это должно сделать трюк для вас.
Сначала импортируйте все файлы в пакет по умолчанию, а затем перетащите их в
новый пакет, JDT будет выполнять рефакторинг и изменять объявления пакетов в проекте.
Ответ 6
Это старый вопрос, но я столкнулся с той же проблемой и написал очень простой bash script. Надеюсь, это поможет кому-то.
for i in *.java; do
sed -i 's/.*package com.example.something;.*/package com.example.something_else;/' $i
done
В принципе, script перемещает все java файлы внутри каталога, и каждое вхождение package com.example.something;
заменяется на package com.example.something_else;
.
Ответ 7
-
ALT+SHIFT+R
добавить подчеркивание в конце имени пакета, дважды нажмите ENTER
-
ALT+SHIFT+R
удалить подчеркивание, дважды ввести ENTER
Готово, если есть несколько пакетов.