Eclipse - Как изменить объявление пакета на .... для всего проекта - PullRequest
18 голосов
/ 29 июля 2011

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

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

Ответы [ 7 ]

27 голосов
/ 29 июля 2011

Если объявления пакетов больше не действительны, то все такие недействительные объявления будут отображаться в представлении Problems в Eclipse. Если вы не видите это представление, вы можете открыть его из Окна-> Показать представление -> Другие ... -> Проблемы (на вкладке Общие).

Вы можете отфильтровать проблемы в представлении «Проблемы» и исправить легко исправляемые, выбрав опцию Quick fix в контекстном меню (доступно при щелчке правой кнопкой мыши). В вашем случае вы должны увидеть нечто похожее на скриншот, размещенный ниже:

Quick fix for incorrect packages

Применение параметров быстрого исправления тривиально, если вы знаете, какой из них правильный - вам придется либо изменить объявление пакета в классе, либо местоположение самого класса. К сожалению, нет возможности исправить проблему между несколькими устройствами за один раз; вам придется применить быстрое решение для каждой проблемы.

Если вы хотите отфильтровать проблемы только этого сорта, рассмотрите возможность настройки представления «Проблемы», чтобы в тексте ошибки отображались все ошибки, текстовое содержимое которых «не соответствует ожидаемому пакету», как показано на следующих снимках экрана:

Configure Problem Contents

Eclipse Configure Package Problems

22 голосов
/ 08 ноября 2011

Для этой конкретной проблемы (которая обычно поставляется с автоматически генерируемыми файлами артефактов) я нашел изящное решение.

Так что, если проблема в том, что ваши объявления пакетов - это "package abc;" в 200 файлах, и вы хотите, чтобы это было "package com.aa.bb.cc.abc;"

Затем в eclipse, Search-> File для "package abc;" в нужной папке или pkg или во всем рабочем пространстве. Не выбирайте опцию поиска, но выберите «Заменить», а затем поместите «пакет com.aa.bb.cc.abc;» когда он просит замену после поиска. Должен сделать трюк.

6 голосов
/ 29 июля 2011

Щелкните правой кнопкой мыши на пакете, выберите Refactor> Rename.Это обновит все исходные файлы с новым именем пакета.

1 голос
/ 21 мая 2014

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

for i in *.java; do
    sed -i 's/.*package com.example.something;.*/package com.example.something_else;/' $i
done

По сути, скрипт перебирает все java-файлы внутри каталога, и каждое вхождение package com.example.something; заменяется на package com.example.something_else;.

.
1 голос
/ 30 ноября 2013

Это должно помочь вам.

Сначала импортируйте все файлы в пакет по умолчанию, а затем перетащите их в новый пакет, JDT выполнит рефакторинг и изменит объявления пакетов по всему проекту.

1 голос
/ 12 сентября 2013

У меня была та же самая проблема, поэтому я написал для этого скрипт bash.

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, вам не нужен параметр '' после -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:)

0 голосов
/ 08 января 2019
  • ALT+SHIFT+R добавить подчеркивание в конце имени пакета, дважды нажмите ENTER
  • ALT+SHIFT+R удалить знак подчеркивания, ENTER дважды

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

...