Импортировать файлы .java в правильный пакет
У меня есть куча исходных файлов *.java
, которые содержат классы в разных пакетах. Я пытаюсь импортировать все эти файлы в проекты Eclipse, но Eclipse всегда помещает их в пакет по умолчанию.
Как я могу сказать Eclipse разместить каждый из файлов в соответствующем подкаталоге пакета, поэтому мне не нужно создавать все различные пакеты вручную?
Я попробовал импорт из функции файловой системы, а также копировал файлы в проект, все из которых помещали файлы в пакет 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 таких файлов (разумеется, с большим количеством контента;-)) еженедельно, поэтому я "Ищу автоматическое решение".
Ответы
Ответ 1
Мне было немного скучно, поэтому я создал приложение Java, чтобы получить все .java файлы из текущей рабочей папки и поместить их в соответствующие подпапки.
Затем вы можете скопировать/вставить вновь созданные папки/файлы в Eclipse.
Исходный код и runnable.jar: https://github.com/felipeweber/OrganizeJavaSources
Чтобы выполнить его, вы скопируете/вставьте runnable.jar в папку, в которой находятся все ваши .java файлы, и запустите ее с помощью java -jar OrganizeJavaSources.jar из командной строки или командной строки.
Он должен работать как в Linux, так и в Windows (и, возможно, MacOS тоже).
В моих тестах он отлично работал с нормальными файлами.
Пожалуйста, обратите внимание, что я не выполнял никаких процедур обработки ошибок и, следовательно, четвертый, но не стесняйтесь вносить свой вклад.
Удачи.
Ответ 2
Ну, мы программисты здесь? так что до сих пор я делаю исследование своего рода трудно найти такую функцию в любой среде IDE, потому что программист должен быть предупрежден о том, что он помещает java файл в неправильный пакет и не должен автоматически организовывать его для программиста.
Ну, я предлагаю вам создать простую консольную программу java, которая может делать манипуляции с файлами для вас, и я знаю, что это будет легко для вас. это будет возможный алгоритм программы
- Прочитайте файл .java
- Проверьте строку
package
, пока терминатор ;
в этом .java файле
- Переместите этот файл в соответствии с именем пакета, заменив
.
разделителями каталогов в качестве адреса, в котором вы будете перемещать файл.
- Создайте папку, если папка перемещения файла не существует
- Повторяйте это до тех пор, пока все файлы не будут перемещены.
Ну, я также хочу, чтобы эта функция не только в затмении, но и на другом IDE, была больна, ожидая дальнейших ответов в этом вопросе.
Ответ 3
В соответствии с этой ссылкой вы можете получить то, что вы действительно хотите сделать.
Файл → Новый проект/Динамический веб-проект
затем
Файл → Новая папка, нажмите "Дополнительно" и выберите "Ссылка на папку в файловой системе".
После этого щелкните правой кнопкой мыши по папке и выберите BuildPath → Использовать в качестве исходной папки.
Вот оно..
ИЛИ
вы можете создать новую папку, скопируйте самую большую папку с *.java файлами и вставьте ее. Затем щелкните по нему правой кнопкой мыши, выберите BuildPath → Использовать в качестве исходной папки...
Я надеюсь, что это сработает для вас!
Ответ 4
Вам нужно взломать.
Я надеюсь, что вы используете linux, иначе будет сложнее:)
1- Создайте небольшую программу java, которая читает и исполняет файл .sh Вот фрагмент, который показывает, как вы можете читать с script
ProcessBuilder pb = new ProcessBuilder("myshell.sh", "myArg1", "myArg2");
Process p = pb.start();
2- Создайте .sh script и убедитесь, что java правильно его выбирает (просто поместите некоторое эхо-сообщение в script и убедитесь, что оно напечатано)
3. Целью этого взлома является попытка использовать grep, который читает все файлы с расширением .java и передает его в программу mv, которая будет поместите их в правильную папку.
4- Как вы узнаете, как установить то, в какой папке (пакете) будет возможно, потому что вы можете прочитать каждый из файлов с помощью cat и таким образом определить, куда они должны идти. Команда mkdir должна помочь вам правильно создать папки, прежде чем перемещать файлы.
5- Если вы не уверены в этом решении, позвольте мне сказать вам, что это очень сложная задача, требующая от вас хорошо изучить и распознать все шаблоны. Я уверен, что это возможно, и вы можете сделать это, используя условную логику трубопроводов и некоторую приятную расслабляющую музыку для озвучивания, чтобы помочь вам сосредоточиться.
Здесь я заканчиваю вам BASH guide, чтобы освежить ваш ум
Удачи и счастливого нового 2013 года
Ответ 5
Если файл находится в неправильном пакете, Eclipse предложит вам исправить ошибку, перемещая файл. С помощью функции быстрого исправления (выберите в представлении "Ошибка", нажмите CTRL + 1), вы можете легко перемещать их. Попробуйте выбрать их все сразу, возможно, ваша версия Eclipse более новая, чем моя, и вы можете исправить их все за один раз. В противном случае он все же быстрее, чем вручную создает пакет.
Ответ 6
Так вот что я сделал...
-
Новый → Проект Java
(опции: нажмите "использовать папку проекта как root для источников и файлов классов" )
-
Далее
-
Выберите "Связать дополнительный источник" (в разделе "Подробности" )
-
Просмотрите папку "Связанные папки" и выберите верхнюю папку (содержащую все ваши пакеты и т.д.).
-
Готово
Если у вас уже есть проект, то...
-
Щелкните правой кнопкой мыши проект в проводнике пакетов и выберите "Свойства"
-
Выберите "Java Build Path"
-
Выберите "Источник ссылок" (на вкладке "Источник" )
-
Просмотрите папку "Связанные папки" и выберите верхнюю папку (содержащую все ваши пакеты и т.д.).
-
Готово
Если ваши файлы не указаны в каталогах, соответствующих указанным в них пакетам, затем ЗАПИСЬ РЕЗЕРВУ ВАШИХ ФАЙЛОВ (т.е. скопируйте их все в другой каталог) и попробуйте следующее:
Скомпилируйте следующую программу с 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());
}
}
}