Подтвердить что ты не робот

Eclipse - Как "Изменить объявление пакета на..." по всему проекту

Я только что импортировал большое количество исходного кода в Eclipse, и в основном имя пакета больше недействительно (код был перемещен папками). Есть ли способ выбрать весь исходный код в Проводнике пакетов и нажать горячую клавишу, чтобы все объявления пакетов были правильно решены для меня? Я знаю, что вы можете сделать это с помощью импорта, выбрав источник и нажав ctl-shift-o, но также возможно для объявления пакета?

Обновление: Рефакторинг пакетов не работает, так как я не хочу менять имя или расположение пакетов, мне просто нужно настроить объявление пакета в исходном коде Java.

4b9b3361

Ответ 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

Готово, если есть несколько пакетов.