0

Java プロジェクトがあり、Linux で実行できるように makefile を作成する必要があります。私のプロジェクトには、外部 jar ファイルとリソース パッケージ (.txt リソース) が含まれています。Linux の初心者で、makefile の書き方を学んでいます。

私のプロジェクト構造

いくつかの資料を参照して、次のようなメイクファイルを作成します。

# Set the file name of your jar package:
JAR_PKG = ADBproject1.jar

# Set your entry point of your java app:
ENTRY_POINT = adb/Bing_WebResults/Run.java

# Need resource directory
RES_DIR = yes

SOURCE_FILES = \
adb/jsonModels/Metadata.java \
adb/jsonModels/Result.java \
adb/jsonModels/Data.java \
adb/jsonModels/DataContainer.java \
adb/models/Weight_ID.java \
adb/models/Pair.java \
adb/models/Document.java \
adb/models/Collections.java \
adb/Bing_WebResults/Bing_Search.java\
adb/Bing_WebResults/Run.java \


JAVAC = javac
JFLAGS = -encoding UTF-8


vpath %.class bin
vpath %.java src

# show help message by default
Default:
    @echo "make new: new project, create src, bin, res dirs."
    @echo "make build: build project."
    @echo "make clean: clear classes generated."
    @echo "make rebuild: rebuild project."
    @echo "make run: run your app."
    @echo "make jar: package your project into a executable jar."

build: $(SOURCE_FILES:.java=.class)

# pattern rule
%.class: %.java
    $(JAVAC) -cp bin -d bin $(JFLAGS) $<

rebuild: clean build

.PHONY: new clean run jar

new:
ifeq ($(RES_DIR),yes)
    mkdir -pv src bin res
else
    mkdir -pv src bin
endif

clean:
    rm -frv bin/*

run:
    java -cp bin $(ENTRY_POINT)

jar:
ifeq ($(RES_DIR),yes)
    jar cvfe $(JAR_PKG) $(ENTRY_POINT)  -C bin . res
else
    jar cvfe $(JAR_PKG) $(ENTRY_POINT) -C bin .
endif

しかし、これら 2 つの外部 .jar ファイル (gson.jar、commons.jar) を makefile に追加する方法がわかりません。そして、私が書いたファイルパスが正しいかどうかはよくわかりません。

4

2 に答える 2

1

すべての *.jar ファイルを新しいフォルダー「lib」に追加することで問題を解決します。次に javac -sourcepath src/ -classpath lib/*.jar 、外部jarファイルの問題を解決します。

于 2012-10-02T23:19:42.303 に答える
1

javac-cpand-classpath引数があります:

-classpath <path>          Specify where to find user class files and
                           annotation processors
-cp <path>                 Specify where to find user class files and
                           annotation processors

ドキュメントに関する限り、それらは同等のようです。

于 2012-10-02T05:03:07.890 に答える