2016-10-24 15 views
-4

bashスクリプトを使用してJavaコードをコンパイルしようとしています。私も引数を渡す必要があります。これは同じディレクトリの別のファイルから取得しています。私のスクリプトは次のようになります。bashスクリプトからjavaをコンパイルして実行する

#!/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ファイル内の唯一のIDです。

私はこの仕事をするのを手助けしてください、私は一日中ソリューションを探していました。 :(

編集:これは愚かな質問だった 私はちょうど私が間違った場所で、引数に渡した実現、私はそれを考え出しありがとうは

+0

コンパイラはIDを使って何をすべきですか?あなたはプログラムを始めるときにそれを渡すことができますか? – Henry

+0

実際に何をしたいですか? javac --helpを使用して、使用するオプションを知ってください。また、 'bar.java'だけが毎回コンパイルされるならば、このスクリプトの有用性は何ですか? – Blip

+0

このIDに基づいて別のJavaファイルを生成します。その後、私は生成された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

ありがとうございます!私はちょうど私の質問がどれほど愚かなのか気づいた。笑 –

関連する問題