2011-07-20 7 views
4

かなり簡単な質問です。 AntやMavenを使わなくてもできますか? (そしてそれによって、私はコマンドラインツールを具体的に意味します)コマンドラインツールを使用してビルドするときに.jarファイルの依存関係を追加するにはどうすればよいですか?

私はuberjarを作成したくないことに気付きました。アーカイブされたユニットは、その外部依存関係がどこにあるかを "知る"ことを望みます。

+0

何をするには?マニフェストを作成しますか? JARを作成しているということは、すでに.classファイルをコンパイルしていることを示唆しています。本当ですか? – duffymo

+0

私の神、それは本当に乱雑に聞こえました。私はそれをより明確にするために編集します。 – makoshichi

答えて

3

コマンドラインの呼び出しがjavacであるとすれば、「コンパイル時にjavacに引数としてライブラリを提供できますか」ということです。 man javacため

トップエントリには、効果的、私はあなただけの私が見て、あなたが探していることは、マニフェストファイルであると考え

javac -classpath path/to/library1.jar Main.java

+0

どうも私はそんなに愚かなことができますか?ええ、あなたはIDEを使ってすべてのことをして、基本を忘れてしまいます。私はファイルを.jarファイルに追加する前にファイルをコンパイルしていませんでした(基本的に、私はたくさんの.javaファイルをアーカイブしていました)。さて、私たちはここで終わった、ありがとう。 – makoshichi

+0

しばらくしてEclipse Eclipseを抜け、 'vim'と' mvn'を使います。 Eclipseが隠すものをどのくらいの頻度でまっすぐな 'mvnパッケージ 'で強調表示できるのか驚くでしょう。通常の練習にハドソン(または他のCI)を追加するためのボーナスポイント。 – ptomli

0

を言う必要がある疑いがある

-classpath classpath 
      Sets the user class path, overriding the user class path in the 
      CLASSPATH environment variable. If neither CLASSPATH or -class- 
      path is specified, the user class path consists of the current 
      directory. See Setting the Class Path for more details. 

を語ります詳細はこちらへ http://download.oracle.com/javase/tutorial/deployment/jar/downman.html

2

META-INF/MANIFEST.MFに変更できます。あなたはこのようなクラスパスに他のjarファイルを追加することができます。

Manifest-Version: 1.0 
Main-Class: org.domain.MyMainClass 
Class-Path: lib/slf4j-log4j12-1.5.8.jar lib/slf4j-api-1.5.8.jar 

私は信じて、あなたがMain-Classを定義し、このようにアプリケーションを起動する場合にのみ、それが動作すること:

java -jar my-app.jar 

また気づき、そのクラスパスパスがありますメインジャーに対してだから私の例ディレクトリ構造内でこのようになります。

  • 私-app.jar
  • libに
    • SLF4J-log4j12-1.5.8.jar
    • SLF4J-API-1.5.8。 jar
関連する問題