Makefile Unix не выполняет файл jarLinux

Ответить
Anonymous
 Makefile Unix не выполняет файл jar

Сообщение Anonymous »

Итак, я работаю над заданием для вводного курса Unix, и одно из заданий выглядит следующим образом:
  • Создание каталога с именем «makeAsst» в вашем каталоге ~/UnixCourse.
  • Скопируйте файлы и каталоги для этого задания в этот каталог:

    Код: Выделить всё

     - cp -r ~cs252/Assignments/cookiej/* ~/UnixCourse/makeAsst/
    
    - Use ls and more to examine the directory structure and files
    that you have obtained.
    
  • В этом новом каталоге создайте файл make, который при запуске make без параметров будет

    Код: Выделить всё

     - Compile the .java files (in the src/) directory, placing all
    resulting .class files into ~/UnixCourse/makeAsst/bin.
    
    - Collect all of the .class files from ~/UnixCourse/makeAsst/bin
    into a file ~/UnixCourse/makeAsst/cookie.jar. This jar file
    should be set up to run the program when invoked as (java -jar
    cookie.jar)
    
Как и любой хороший файл make, ваш должен позволять перекомпилировать программу после того, как один или несколько файлов исходного кода были изменено с использованием минимально необходимого количества шагов перестройки. чтобы выполнить задание.
Я добрался до делаю make-файл, но постоянно получаю различные ошибки.

Код: Выделить всё

# Define source and destination directories
SRCDIR := src
BINDIR := ~/UnixCourse/makeAsst/bin
JARFILE := ~/UnixCourse/makeAsst/cookie.jar

# Define Java compiler
JAVAC := javac

# Define options for Java compiler
JAVACFLAGS := -d $(BINDIR) -classpath $(SRCDIR)

# Define Java archive tool
JAR := jar

# Define options for JAR tool
JARFLAGS := cvf

# Define the list of .java files to compile
JAVA_FILES := $(wildcard $(SRCDIR)/cs252/*.java) $(wildcard $(SRCDIR)/cs252/players/*.java)

# Define the list of .class files
CLASS_FILES := $(patsubst $(SRCDIR)/%.java,$(BINDIR)/%.class,$(JAVA_FILES))

# Define the default target
.PHONY: all
all: $(JARFILE)

# Rule to compile .java files
$(BINDIR)/%.class: $(SRCDIR)/%.java
$(JAVAC) $(JAVACFLAGS) $<

# Rule to create the JAR file
$(JARFILE): $(CLASS_FILES)
$(JAR) $(JARFLAGS) $@ -C $(BINDIR) .

# Rule to clean the compiled files
.PHONY: clean
clean:
rm -rf $(BINDIR)/*.class $(JARFILE)
Вот как выглядит make-файл, я попытался запустить команду java -jar cookie.jar, но затем получил сообщение «нет основного атрибута манифеста в cookie.jar». "
Затем я добавил атрибут манифеста, создав файл Manifest.txt со строкой "Main-Class: cs252.Chomp" и использовал команду jar cmf Manifest.txt ~/UnixCourse /makeAsst/cookie.jar -C ~/UnixCourse/makeAsst/bin ., чтобы обновить файл jar, включив в него параметр манифеста.
Затем я запустил java -jar cookie. jar еще раз, и мне удалось запустить игру chomp. После этого я попытался запустить последнюю команду ~cs252/bin-s24/makeAsst, чтобы получить код назначения, но затем появилось это сообщение об ошибке, и мне не удалось его обойти:

Код: Выделить всё

cs_jrich096@europa:~/UnixCourse/makeAsst$ ~cs252/bin-s24/makeAsst

Checking basic compilation

Checking jar file

no main manifest attribute, in cookie.jar

After running "make", the jar file cookie.jar exists, but cannot be executed\n at (eval 1) line 68.
Я не знаю, куда идти дальше, поэтому буду очень признателен за некоторую помощь! дайте мне знать, если потребуется дополнительная информация

Подробнее здесь: https://stackoverflow.com/questions/784 ... e-jar-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»