Нахождение соответствующего файла.classpath для исходного файла.java
Допустим, у меня есть файл Java C:\workspace\project\src\packagename\foobar.java
, Теперь я хотел бы скомпилировать этот файл во время выполнения, но для этого мне нужны соответствующие .classpath
файл (точнее, его записи), расположенный по адресу C:\workspace\project\.classpath
, чтобы я мог передать зависимости с -classpath
аргумент (этот подход работает, если я жестко его кодирую, но это, очевидно, только доказательство концепции, а не цель).
Как мне найти .classpath
файл?
Моя идея шла вверх по дереву файлов, начиная с foobar.java
пока я не достигну уровня, на котором .classpath
существует файл, который я могу затем использовать.
Тем не менее, я а) не уверен, что это способ сделать это, и б) не уверен, как идти вверх по дереву файлов, кроме String.split
-вхождение файла и удаление сегментов, начиная с конца. Это ужасно, но я отказываюсь верить, что лучшего варианта нет.
1 ответ
Звучит так, будто вы спрашиваете, как написать код Java, который понимает структуру и структуру, скажем, каталогов проектов eclipse. Чтобы затем "имитировать" затмение и компилировать файлы для вас.
Это, наверное, действительно плохая идея. Видите ли, если вы не говорите только об очень маленьких и "сокращенных" проектах, рано или поздно вы столкнетесь с крупными проектами, каждый из которых будет немного отличаться от другого. Вы будете постоянно пытаться исправить ситуацию, и каждый раз, когда вы исправляете ошибку, появляется другой проект, и появляется что-то новое, и ваше решение ломается. Потому что вы не можете получить надежную "копию" кода сборки eclipse, если не используете этот код сборки.
Таким образом, мое предложение:
- понять, есть ли способ запустить затмение (или любые другие файлы проекта IDE, о которых вы говорите) через командную строку. Используйте код сборки, который знает, как создавать эти вещи. Смотрите здесь, как это сделать для затмения.
- Посмотрите, возможно ли изменить такие проекты, чтобы иметь конфигурацию сборки maven/gradle. потому что тогда вы можете легко построить эту вещь, используя Maven / Gradle