2016-10-24 6 views
-4

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

#!/usr/bin/env bash 

MYID="$(cat $(pwd)/my.id)" 
eval javac src/main/java/foo/bar.java "$MYID" 

но думает мой аргумент в качестве еще одного Java-файл для компиляции и дает мне ошибку:

Class names, 'abc123', are only accepted if annotation processing is explicitly requested 

P.S. abc123 - единственный идентификатор в файле my.id, который мне нужно передать.

Пожалуйста, помогите мне сделать эту работу, я искал решения весь день. :(

редактировать:.. Это был глупый вопрос я просто понял, что я проходил в качестве аргументов в неправильном месте я понял это большое спасибо

+0

Что должен делать компилятор с идентификатором? Может быть, вы захотите передать его при запуске программы? – Henry

+0

Собственно, что вы хотите сделать? используйте javac --help, чтобы узнать параметры, которые будут использоваться. Какова же утилита этого скрипта, если каждый раз компилируется только 'bar.java'? – Blip

+0

Он будет генерировать еще один Java-файл, основанный на этом id. После этого я скомпилирую другой класс с созданным Java-файлом. –

ответ

0

Вы собираетесь об этом неправильный путь.!. команда javac компилирует программы то есть он не генерирует исходный код

на основе ваших комментариев это звучит, как вы должны делать что-то вроде этого:...

javac foo/Bar.java 
java foo.Bar $(cat my.id) > foo/Baz.java 
javac foo/Baz.java 

Предполагается, что foo.Bar - это какая-то программа генератора, которая знает, как генерировать исходный код Java.

В действительности, я ожидаю, что то, что вы действительно пытаетесь сделать, - это расширение шаблона исходного кода. Существуют более простые и/или более гибкие способы сделать это, написав на заказ программу Java, чтобы сделать это. (Например, используйте утилиту «m4».)

+0

да спасибо! Я просто понял, насколько глупым был мой вопрос. лол –

Смежные вопросы