Makefile Java с аргументами командной строки

У меня есть программа, которую я хочу запустить, и вот как обычно ее запускают с помощью командной строки:

java AvlTree.java inputs.txt

Я хочу создать make-файл для выполнения вышеуказанной команды, чтобы он принимал аргумент командной строки, который является именем файла: inputs.txt

Это следующий make-файл, который я написал:

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

CLASSES = \
        AVLTree.java

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) *.class

Я не знаю, как указать makefile использовать аргумент командной строки inputs.txt. Более того, если я наберу make в командной строке, выполнит ли она мою программу? Или он создаст исполняемый файл?

Я поместил исходный код: AvlTree.java, inputs.txt и makefile в одну папку. Любая помощь будет оценена.

У меня есть только поверхностные знания о make, но из того, что я могу собрать воедино из вышеизложенного, нет обращения к java, а только к javac.

Turing85 11.11.2022 06:53
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
Сортировка hashmap по значениям
Сортировка hashmap по значениям
На Leetcode я решал задачу с хэшмапой и подумал, что мне нужно отсортировать хэшмапу по значениям.
Принципы SOLID - лучшие практики
Принципы SOLID - лучшие практики
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип...
gRPC на Android с использованием TLS
gRPC на Android с использованием TLS
gRPC - это относительно новая концепция взаимодействия между клиентом и сервером, но не более.
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта команда

java AvlTree.java inputs.txt

это не то, как обычно запускают Java-программу. Таким образом можно запустить программу Java. Но это не "нормально". Потому что обычно вы компилируете свою Java-программу. Какой шаг вы сейчас делаете.

javac AvlTree.java
java -cp . AvlTree inputs.txt

Вторая команда выполнит скомпилированный AvlTree.class. Кроме того, вы обычно не используете make или Makefile для Java. Обычно вы используете maven, ant, sbt или gradle. Не make. В любом случае, вы можете изменить свой Makefile лайк

default: run

classes: $(CLASSES:.java=.class)

run: classes
    java -cp . AvlTree inputs.txt

О, теперь я понимаю, почему мне было трудно найти контент java make, поскольку для этого вы используете Gradle и Maven. Кроме того, редактируя make-файл, вы имеете в виду просто добавление инструкций из вашего ответа в исходный make-файл?

Rishab Parmar 11.11.2022 07:05

@RishabParmar Почти. Замените цель default на текущую Makefile, как указано выше. Затем добавьте цель run (с зависимостью classes) внизу. И он должен вести себя так, как вам хотелось бы. Но это, вероятно, будет хрупким. Make — более старая технология.

Elliott Frisch 11.11.2022 16:31

Другие вопросы по теме