Импортировать файлы .java в правильный пакет

17

У меня есть куча исходных файлов *.java , которые содержат классы в разных пакетах. Я пытаюсь импортировать все эти файлы в проекты Eclipse, но Eclipse всегда помещает их в пакет по умолчанию.

Как я могу сказать Eclipse разместить каждый из файлов в соответствующем подкаталоге пакета, поэтому мне не нужно создавать все различные пакеты вручную?

Я попробовал функцию import из файловой системы , а также скопировал файлы в проект, все из которых помещают файлы в пакет default , а не те, которые указаны в package поверх каждого файла.

Связанные вопросы SO касаются только , ссылаясь на пакеты вне иерархии каталогов src проекта , вручную создавая файлы в соответствующем каталоге пакетов , отсутствующие import или пакеты переименования пакетов , но, похоже, эта проблема уже не обсуждалась.

Обновление: . В соответствии с запросом в комментариях, вот несколько примеров файлов:

Test1.java

package some.random.pkg;

public class Test1 {
}

Test2.java

package some.other.pkg;

public class Test2 {
}

Test3.java

package yet.another.pkg;

public class Test3 {
}

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

Обновление 2: . Чтобы уточнить масштаб, предположим, что на самом деле примерно на 100 таких файлов (разумеется, с большим количеством контента ;-)) еженедельно, поэтому я «Ищу автоматическое решение».

    
задан O. R. Mapper 19.12.2012 в 14:24
источник
  • Я думаю, что это невозможно, вы должны создать программу, которая автоматизировала бы эти вещи для вас. –  Mp de la Vega 31.12.2012 в 10:39
  • можете ли вы добавить некоторые структуры вашей кучи java-файлов, выглядящие со своими пакетами [email protected] –  gks 31.12.2012 в 10:40
  • @Mahan: Ну, да, я ищу соответствующую функцию в Eclipse; поскольку есть всевозможные функции импорта, невозможно представить, что чего-то такого простого не было бы. –  O. R. Mapper 31.12.2012 в 10:52
  • @ theunlucky: Просьба уточнить; вы имеете в виду некоторые файлы примеров? –  O. R. Mapper 31.12.2012 в 10:53
  • @theunlucky: Я добавил исходный код некоторых иллюстративных файлов, чтобы проиллюстрировать проблему. –  O. R. Mapper 02.01.2013 в 10:03

6 ответов

8

Мне было немного скучно, поэтому я создал приложение Java, чтобы получить все .java-файлы из текущей рабочей папки и поместить их в соответствующие подпапки.

Затем вы можете скопировать / вставить вновь созданные папки / файлы в Eclipse.

Исходный код и runnable .jar: Ссылка

Чтобы выполнить его, вы скопируете / вставьте runnable .jar в папку, в которой находятся все ваши .java-файлы, и запустите ее с помощью java -jar OrganizeJavaSources.jar из командной строки или командной строки. Он должен работать как в Linux, так и в Windows (и, возможно, MacOS тоже).

В моих тестах он отлично работал с нормальными файлами. Пожалуйста, обратите внимание, что я не выполнял никаких процедур обработки ошибок и, следовательно, четвертый, но не стесняйтесь вносить свой вклад.

Удачи.

    
ответ дан beder 04.01.2013 в 19:00
  • Хорошая работа! Было бы даже лучше, если бы вы могли преобразовать это в плагин Eclipse, который выполнил бы это при импорте ... :-) –  Andrew Eisenberg 06.01.2013 в 06:04
  • Я хотел бы использовать это в настройке образования. Разрешено ли это? –  O. R. Mapper 07.01.2013 в 08:44
  • Независимо от вышеуказанного вопроса, я собираюсь принять это как выбранный ответ. Тем не менее, я, конечно, не собирался спрашивать, пожалуйста, напишите мой код для меня типа вопроса, хотя этот окончательно принятый ответ на самом деле делает его одним. Однако, поскольку мой вопрос как таковой не мог быть отвечен (ранее существовавшая функция в Eclipse), этот ответ является наиболее практически полезным и самым близким к первоначально ожидаемому для ответа. –  O. R. Mapper 07.01.2013 в 10:07
  • «Я бы хотел использовать это в настройке образования». Пожалуйста, не стесняйтесь использовать по своему усмотрению, что вся ЛИЦЕНЗИЯ вещь в основном по привычке :-) –  beder 07.01.2013 в 13:39
  • @ O.R.Mapper хорошо, я думаю, что кто-то уже сделал что-то для нас того, что мы думаем делать раньше =) –  Mp de la Vega 08.01.2013 в 02:36
2

В соответствии с этой ссылкой вы можете получить то, что вы действительно хотите сделать.

Файл - & gt; Новый проект / динамический веб-проект

затем

Файл - & gt; Новая папка, нажмите «Дополнительно» и выберите «Ссылка на папку в файловой системе».

После этого щелкните правой кнопкой мыши по папке и выберите BuildPath - & gt; Использовать в качестве исходной папки. Вот оно ..

ИЛИ

вы можете создать новую папку, скопируйте самую большую папку с * .java-файлами и вставьте ее. Затем щелкните правой кнопкой мыши на нем, выберите BuildPath - & gt; Использовать в качестве исходной папки ...

Я надеюсь, что это сработает для вас!

    
ответ дан DarkHorse 31.12.2012 в 12:40
  • Оба этих решения не работают для меня. Компилятор выводит ошибку. Объявленный пакет «...» не соответствует ожидаемому пакету «» для каждого из .java-файлов (где ... является соответствующим пакетом для каждого файла). –  O. R. Mapper 02.01.2013 в 09:40
  • Ох .. видя ваши обновления на вопрос, я понимаю, что вам нужны каталоги, созданные автоматически в иерархии классов junch java в соответствии с их упомянутыми пакетами ... –  DarkHorse 02.01.2013 в 11:08
  • ___ qstnhdr ___ Импортировать файлы .java в правильный пакет ___ answer14162381 ___ <div class="post-text" itemprop="text"> <p> Мне было немного скучно, поэтому я создал приложение Java, чтобы получить все .java-файлы из текущей рабочей папки и поместить их в соответствующие подпапки. </p> <p> Затем вы можете скопировать / вставить вновь созданные папки / файлы в Eclipse. </p> <p> Исходный код и runnable .jar: Ссылка </p> <p> Чтобы выполнить его, вы скопируете / вставьте runnable .jar в папку, в которой находятся все ваши .java-файлы, и запустите ее с помощью java -jar OrganizeJavaSources.jar из командной строки или командной строки. Он должен работать как в Linux, так и в Windows (и, возможно, MacOS тоже). </P> <p> В моих тестах он отлично работал с нормальными файлами. Пожалуйста, обратите внимание, что я не выполнял никаких процедур обработки ошибок и, следовательно, четвертый, но не стесняйтесь вносить свой вклад. </P> <p> Удачи. </p>     </DIV> ___ answer14101114 ___ <div class="post-text" itemprop="text"> <p> В соответствии с этой <a href="http://ubuntuforums.org/showthread.php?t=738544"> ссылкой </a> вы можете получить то, что вы действительно хотите сделать. </p> <p> Файл - & gt; Новый проект / динамический веб-проект </p> <p> затем </р> <p> Файл - & gt; Новая папка, нажмите «Дополнительно» и выберите «Ссылка на папку в файловой системе». </P> <p> После этого щелкните правой кнопкой мыши по папке и выберите BuildPath - & gt; Использовать в качестве исходной папки. Вот оно .. </p> <p> ИЛИ </р> <p> вы можете создать новую папку, скопируйте самую большую папку с * .java-файлами и вставьте ее. Затем щелкните правой кнопкой мыши на нем, выберите BuildPath - & gt; Использовать в качестве исходной папки ... </p> <p> Я надеюсь, что это сработает для вас! </p>     </DIV> ___ qstntxt ___ <div class="post-text" itemprop="text"> <p> У меня есть куча исходных файлов %code% , которые содержат классы в разных пакетах. Я пытаюсь импортировать все эти файлы в проекты Eclipse, но Eclipse всегда помещает их в пакет по умолчанию. </P> <p> <strong> Как я могу сказать Eclipse разместить каждый из файлов в соответствующем подкаталоге пакета, поэтому мне не нужно создавать все различные пакеты вручную? </strong> </p> <p> Я попробовал функцию <em> import из файловой системы </em>, а также скопировал файлы в проект, все из которых помещают файлы в пакет %code% , а не те, которые указаны в %code% поверх каждого файла. </p> <p> Связанные вопросы SO касаются только <a href="https://stackoverflow.com/questions/10910160/source-folder-is-not-on-the-java-build-class-path-creating-java-package">, ссылаясь на пакеты вне иерархии каталогов %code% проекта </a>, вручную создавая файлы в соответствующем каталоге пакетов , <a href="https://stackoverflow.com/questions/2681161/how-to-import-a-package-from-eclipse"> отсутствующие %code% </a> или <a href="https://stackoverflow.com/questions/11047841/how-to-add-prefix-to-package-names"> пакеты переименования пакетов </a></a >, но, похоже, эта проблема уже не обсуждалась. </p> <p> <strong> Обновление: </strong>. В соответствии с запросом в комментариях, вот несколько примеров файлов: </p> <p> Test1.java </р> %pre% <p> Test2.java </р> %pre% <p> Test3.java </р> %pre% <p> Поместите все их в один и тот же каталог, а затем попытайтесь импортировать их в проект Java в Eclipse, не создавая вручную каталоги для различных пакетов. </p> <p> <strong> Обновление 2: </strong>. Чтобы уточнить масштаб, предположим, что на самом деле примерно на 100 таких файлов (разумеется, с большим количеством контента ;-)) еженедельно, поэтому я «Ищу автоматическое решение». </p>     </DIV> ___ answer14100606 ___ <div class="post-text" itemprop="text"> <p> Если файл находится в неправильном пакете, Eclipse предложит вам исправить ошибку, перемещая файл. С помощью функции быстрого исправления (выберите в представлении «Ошибка», нажмите CTRL + 1), вы можете легко перемещать их. Попробуйте выбрать их все сразу, возможно, ваша версия Eclipse более новая, чем моя, и вы можете исправить их все за один раз. В противном случае он все же быстрее, чем вручную создает пакет. </P>     </DIV> ___ commmment19505604 ___ Я думаю, что это невозможно, вы должны создать программу, которая автоматизировала бы эти вещи для вас. ___ answer14188052 ___ <div class="post-text" itemprop="text"> <p> Вам нужно взломать. Я надеюсь, что вы используете linux, иначе будет сложнее:) </p> <p> 1- Создайте небольшую программу java, которая читает и исполняет файл .sh    Вот фрагмент, который показывает, как вы можете читать скрипт </p> %pre% <p> 2- Создайте сценарий .sh и убедитесь, что java правильно его выбирает (просто поместите некоторое эхо-сообщение в скрипт и убедитесь, что оно напечатано) </p> <p> 3. Целью этого взлома является попытка использовать <strong> grep </strong>, который читает все файлы с расширением .java и передает его в программу <strong> mv </strong>, которая будет поместите их в правильную папку. </p> <p> 4- Как вы узнаете, как установить то, в какой папке (пакете) будет возможно, потому что вы можете прочитать каждый из файлов с помощью <strong> cat </strong> и таким образом определить, куда они должны идти. Команда <strong> mkdir </strong> должна помочь вам правильно создать папки, прежде чем перемещать файлы. </P> <p> 5- Если вы не уверены в этом решении, позвольте мне сказать вам, что это очень сложная задача, требующая от вас хорошо изучить и распознать все шаблоны. Я уверен, что это возможно, и вы можете сделать это, используя условную логику трубопроводов и некоторую приятную расслабляющую музыку для озвучивания, чтобы помочь вам сосредоточиться. </P> <p> Здесь я заканчиваю вам <a href="http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss6.2"> руководство BASH </a> освежить свой ум </p> <p> Удачи и счастливого нового 2013 года </p>     </DIV> ___ answer14161497 ___ <div class="post-text" itemprop="text"> <p> <strong> Так вот что я сделал ... </strong> </p> <ol> <li> <p> Новый - & gt; Java-проект (опции: нажмите «использовать папку проекта как root для источников и файлов классов») </p> </li> <Li> <p> Далее </p> </li> <li> <p> Выберите «Связать дополнительный источник» (в разделе «Подробности») </p> </li> <li> <p> Просмотрите папку «Связанные папки» и выберите верхнюю папку (содержащую все ваши пакеты и т. д.). </p> </li> <Li> <p> Готово </p> </li> </ol> <p> <strong> Если у вас уже есть проект, то ... </strong> </p> <ol> <li> <p> Щелкните правой кнопкой мыши проект в проводнике пакетов и выберите «Свойства» </p> </li> <li> <p> Выберите «Java Build Path» </p> </li> <li> <p> Выберите «Источник ссылок» (на вкладке «Источник») </p> </li> <li> <p> Просмотрите папку «Связанные папки» и выберите верхнюю папку (содержащую все ваши пакеты и т. д.). </p> </li> <Li> <p> Готово </p> </li> </ol> <p> <strong> Если ваши файлы не указаны в каталогах, соответствующих указанным в них пакетам, затем ЗАПИСЬ РЕЗЕРВУ ВАШИХ ФАЙЛОВ (т. е. скопируйте их все в другой каталог) и попробуйте следующее: </strong> </p> <p> Скомпилируйте следующую программу с <strong> javac MakePackDirs.java </strong> и запустите с помощью <strong> java MakePackDirs </strong>, а структура каталогов и файлов будет создана в соответствии с объявлениями пакетов, а затем используйте процедуру, описанную выше . </р> %pre%     </DIV> ___ commmment19505851 ___ @ theunlucky: Просьба уточнить; вы имеете в виду некоторые файлы примеров? ___ commmment19505832 ___ @Mahan: Ну, да, я ищу соответствующую функцию в Eclipse; поскольку есть всевозможные функции импорта, невозможно представить, что чего-то такого простого не было бы. ___ commmment19505621 ___ можете ли вы добавить некоторые структуры вашей кучи java-файлов, выглядящие со своими пакетами [email protected] ___ commmment19542254 ___ @theunlucky: Я добавил исходный код некоторых иллюстративных файлов, чтобы проиллюстрировать проблему. ___ answer14100133 ___ <div class="post-text" itemprop="text"> <p> Ну, мы программисты здесь? так что до сих пор я делаю исследование своего рода трудно найти такую ​​функцию в любой среде IDE, потому что программист должен быть предупрежден о том, что он помещает java-файл в неправильный пакет и не должен автоматически организовывать его для программиста. </p> <p> Ну, я предлагаю вам создать простую консольную программу java, которая может делать манипуляции с файлами для вас, и я знаю, что это будет легко для вас. это будет возможный алгоритм программы </p> <ol> <li> Прочитайте файл .java </li> <li> Проверьте строку %code% , пока терминатор %code% не будет указан в этом .java-файле </li> <li> Переместите этот файл в соответствии с именем пакета, заменив %code% на разделители каталога, можно использовать в качестве адреса, где вы будете перемещать файл. </li> <li> Создайте папку, если папка перемещения файла не существует </li> <li> Повторяйте это до тех пор, пока все файлы не будут перемещены. </li> </ol> <p> Ну, я также хочу, чтобы эта функция не только в eclipse, но и на других IDE была плохой, ожидая дальнейших ответов в этом вопросе. </p>     </DIV> ___ commmment19650618 ___ Хорошая работа! Было бы даже лучше, если бы вы могли преобразовать это в плагин Eclipse, который выполнил бы это при импорте ... :-) ___ commmment19680341 ___ «Я бы хотел использовать это в настройке образования». Пожалуйста, не стесняйтесь использовать по своему усмотрению, что вся ЛИЦЕНЗИЯ вещь в основном по привычке :-) ___ commmment19673420 ___ Я хотел бы использовать это в настройке образования. Разрешено ли это? ___ commmment19675040 ___ Независимо от вышеуказанного вопроса, я собираюсь принять это как выбранный ответ. Тем не менее, я, конечно, не собирался спрашивать, пожалуйста, напишите мой код для меня типа вопроса, хотя этот окончательно принятый ответ на самом деле делает его одним. Однако, поскольку мой вопрос как таковой не мог быть отвечен (ранее существовавшая функция в Eclipse), этот ответ является наиболее практически полезным и самым близким к первоначально ожидаемому для ответа. ___ commmment19541841 ___ Оба этих решения не работают для меня. Компилятор выводит ошибку. Объявленный пакет «...» не соответствует ожидаемому пакету «» для каждого из .java-файлов (где ... является соответствующим пакетом для каждого файла). ___ commmment19543745 ___ Ох .. видя ваши обновления на вопрос, я понимаю, что вам нужны каталоги, созданные автоматически в иерархии классов junch java в соответствии с их упомянутыми пакетами ... ___ commmment19545629 ___ Интересные ссылки. Первый - в той же ситуации, но ищет противоположное решение (изменение объявления пакета при сохранении структуры каталогов); второй будет полезен, если Eclipse рассмотрит различные ошибки, достаточно похожие, чтобы применить одно и то же исправление для всех из них. К сожалению, ссылки действительно подразумевают, что такая функция еще не является частью Eclipse, но все еще надеется на некоторый плагин еще на несколько дней, прежде чем принимать ответ. ___ commmment19544644 ​​___ Ваша проблема уже обсуждалась здесь и здесь. Итак, в целом, нам нужно ждать, пока такая особенность в eclipe не появится :) ___ commmment19700442 ___ @ O.R.Mapper хорошо, я думаю, что кто-то уже сделал что-то для нас того, что мы думаем делать раньше =) ___ commmment19542048 ___ Спасибо; Я сделал более или менее те же предположения о том, как будет работать соответствующий алгоритм. Я бы хотел избежать этой работы, подобной шаблону, и, таким образом, искать способ сделать это, что, я надеюсь, уже интегрирован в Eclipse в моем вопросе. ___ commmment19673842 ___ Это не работает. Я продолжаю получать сообщение «Объявленный пакет ... не соответствует ожидаемому пакету ...», и все файлы из исходной папки добавляются в один пакет, а не отдельные пакеты, объявленные в директивах пакета в различные исходные файлы. ___ commmment19543981 ___ Ну, это многообещающая функция для любой IDE, но для меня, начиная создавать уже приложение для выполнения этой задачи, намного лучше, чем ждать чего-то, возможно, не существует ___ commmment19542172 ___ К сожалению, даже Eclipse Juno говорит, что выбранные проблемы не имеют общего применимого быстрого исправления. Несмотря на то, что ошибки компилятора одинаковы и просто отличаются указанным объявленным пакетом для каждого файла. Выполнение этого файла по файлу для примерно 100 файлов (еженедельно ...) все еще немного утомительно для моего вкуса ;-) ___ commmment19680968 ___ Хорошо. Ответ обновлен, чтобы запустить программу для создания каталогов пакетов. Eclipse не делает это из коробки AFAIK. ___ commmment19677998 ___ Нет, все файлы находятся в одном каталоге, независимо от их объявленного пространства имен. См. Мой вопрос: «Поместите все [примеры файлов с разным объявлением пакетов] в тот же каталог, а затем попытайтесь импортировать их в проект Java в Eclipse без ручного создания каталогов для разных пакетов». чтобы воспроизвести мою ситуацию. ___ commmment19677304 ___ Работает для меня. Итак, ваши файлы в соответствующих каталогах (т. Е. Каждый исходный файл в каталоге в соответствии с тем, что определено в директиве пакета для этого исходного файла)? Если нет, то это объясняет, почему это не работает для вас! ___ –  DarkHorse 02.01.2013 в 11:43
  • Интересные ссылки. Первый - в той же ситуации, но ищет противоположное решение (изменение объявления пакета при сохранении структуры каталогов); второй будет полезен, если Eclipse рассмотрит различные ошибки, достаточно похожие, чтобы применить одно и то же исправление для всех из них. К сожалению, ссылки действительно подразумевают, что такая функция еще не является частью Eclipse, но все еще надеется на некоторый плагин еще на несколько дней, прежде чем принимать ответ. –  O. R. Mapper 02.01.2013 в 12:21
2

Ну, мы программисты здесь? так что до сих пор я делаю исследование своего рода трудно найти такую ​​функцию в любой среде IDE, потому что программист должен быть предупрежден о том, что он помещает java-файл в неправильный пакет и не должен автоматически организовывать его для программиста.

Ну, я предлагаю вам создать простую консольную программу java, которая может делать манипуляции с файлами для вас, и я знаю, что это будет легко для вас. это будет возможный алгоритм программы

  1. Прочитайте файл .java
  2. Проверьте строку package , пока терминатор ; не будет указан в этом .java-файле
  3. Переместите этот файл в соответствии с именем пакета, заменив . на разделители каталога, можно использовать в качестве адреса, где вы будете перемещать файл.
  4. Создайте папку, если папка перемещения файла не существует
  5. Повторяйте это до тех пор, пока все файлы не будут перемещены.

Ну, я также хочу, чтобы эта функция не только в eclipse, но и на других IDE была плохой, ожидая дальнейших ответов в этом вопросе.

    
ответ дан Mp de la Vega 31.12.2012 в 10:59
  • Спасибо; Я сделал более или менее те же предположения о том, как будет работать соответствующий алгоритм. Я бы хотел избежать этой работы, подобной шаблону, и, таким образом, искать способ сделать это, что, я надеюсь, уже интегрирован в Eclipse в моем вопросе. –  O. R. Mapper 02.01.2013 в 09:52
  • Ну, это многообещающая функция для любой IDE, но для меня, начиная создавать уже приложение для выполнения этой задачи, намного лучше, чем ждать чего-то, возможно, не существует –  Mp de la Vega 02.01.2013 в 11:18
2

Вам нужно взломать. Я надеюсь, что вы используете linux, иначе будет сложнее:)

1- Создайте небольшую программу java, которая читает и исполняет файл .sh    Вот фрагмент, который показывает, как вы можете читать скрипт

 ProcessBuilder pb = new ProcessBuilder("myshell.sh", "myArg1", "myArg2");
 Process p = pb.start();

2- Создайте сценарий .sh и убедитесь, что java правильно его выбирает (просто поместите некоторое эхо-сообщение в скрипт и убедитесь, что оно напечатано)

3. Целью этого взлома является попытка использовать grep , который читает все файлы с расширением .java и передает его в программу mv , которая будет поместите их в правильную папку.

4- Как вы узнаете, как установить то, в какой папке (пакете) будет возможно, потому что вы можете прочитать каждый из файлов с помощью cat и таким образом определить, куда они должны идти. Команда mkdir должна помочь вам правильно создать папки, прежде чем перемещать файлы.

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

Здесь я заканчиваю вам руководство BASH освежить свой ум

Удачи и счастливого нового 2013 года

    
ответ дан sfrj 07.01.2013 в 00:46
1

Если файл находится в неправильном пакете, Eclipse предложит вам исправить ошибку, перемещая файл. С помощью функции быстрого исправления (выберите в представлении «Ошибка», нажмите CTRL + 1), вы можете легко перемещать их. Попробуйте выбрать их все сразу, возможно, ваша версия Eclipse более новая, чем моя, и вы можете исправить их все за один раз. В противном случае он все же быстрее, чем вручную создает пакет.

    
ответ дан Jan Schejbal 31.12.2012 в 11:51
  • К сожалению, даже Eclipse Juno говорит, что выбранные проблемы не имеют общего применимого быстрого исправления. Несмотря на то, что ошибки компилятора одинаковы и просто отличаются указанным объявленным пакетом для каждого файла. Выполнение этого файла по файлу для примерно 100 файлов (еженедельно ...) все еще немного утомительно для моего вкуса ;-) –  O. R. Mapper 02.01.2013 в 09:58
1

Так вот что я сделал ...

  1. Новый - & gt; Java-проект (опции: нажмите «использовать папку проекта как root для источников и файлов классов»)

  2. Далее

  3. Выберите «Связать дополнительный источник» (в разделе «Подробности»)

  4. Просмотрите папку «Связанные папки» и выберите верхнюю папку (содержащую все ваши пакеты и т. д.).

  5. Готово

Если у вас уже есть проект, то ...

  1. Щелкните правой кнопкой мыши проект в проводнике пакетов и выберите «Свойства»

  2. Выберите «Java Build Path»

  3. Выберите «Источник ссылок» (на вкладке «Источник»)

  4. Просмотрите папку «Связанные папки» и выберите верхнюю папку (содержащую все ваши пакеты и т. д.).

  5. Готово

Если ваши файлы не указаны в каталогах, соответствующих указанным в них пакетам, затем ЗАПИСЬ РЕЗЕРВУ ВАШИХ ФАЙЛОВ (т. е. скопируйте их все в другой каталог) и попробуйте следующее:

Скомпилируйте следующую программу с javac MakePackDirs.java и запустите с помощью java MakePackDirs , а структура каталогов и файлов будет создана в соответствии с объявлениями пакетов, а затем используйте процедуру, описанную выше .

import java.util.regex.*;
import java.util.*;
import java.io.*;

public class MakePackDirs {

    public static void main(String[] args) throws Exception {

        String pkg;

        for (File f : new File(".").listFiles(
            new FilenameFilter () {
               public boolean accept (File dir, String name) {
                   return name.endsWith(".java");
               } })) {

            if (f.isDirectory()) continue;

            System.out.println("Processing " + f.getName());
            Scanner s = new Scanner(f);
            try {
                Pattern p = Pattern.compile("^[ ]*package +[^;]*", 
                            Pattern.MULTILINE);
                if ((pkg = s.findWithinHorizon(p,0))==null) continue;
            }
            finally {
                s.close();
            }

            System.out.println("Found " + pkg);

            pkg = pkg.split(" ")[1];
            pkg = pkg.replaceAll("\.","/").trim();

            System.out.println("Creating " + pkg);

            File dir = new File(pkg);
            boolean created = dir.mkdirs();

            if (!created && !dir.exists()) 
                throw new Exception("Can't create package directory");

            // Moving file
            File dest = new File(dir, f.getName());
            boolean renamed = f.renameTo(dest);

            if (!renamed) 
                throw new Exception("Can't move file to " + dest.getPath());

            System.out.println(f.getName() + " moved to " + dir.getPath());
        }
    }
}
    
ответ дан xagyg 04.01.2013 в 18:04
  • Это не работает. Я продолжаю получать сообщение «Объявленный пакет ... не соответствует ожидаемому пакету ...», и все файлы из исходной папки добавляются в один пакет, а не отдельные пакеты, объявленные в директивах пакета в различные исходные файлы. –  O. R. Mapper 07.01.2013 в 09:08
  • Работает для меня. Итак, ваши файлы в соответствующих каталогах (т. Е. Каждый исходный файл в каталоге в соответствии с тем, что определено в директиве пакета для этого исходного файла)? Если нет, то это объясняет, почему это не работает для вас! –  xagyg 07.01.2013 в 11:36
  • Нет, все файлы находятся в одном каталоге, независимо от их объявленного пространства имен. См. Мой вопрос: «Поместите все [примеры файлов с разным объявлением пакетов] в тот же каталог, а затем попытайтесь импортировать их в проект Java в Eclipse без ручного создания каталогов для разных пакетов». чтобы воспроизвести мою ситуацию. –  O. R. Mapper 07.01.2013 в 12:02
  • Хорошо. Ответ обновлен, чтобы запустить программу для создания каталогов пакетов. Eclipse не делает это из коробки AFAIK. –  xagyg 07.01.2013 в 14:01