Javaファイル(MyRtmpClient.Java)には次のものがあります。
import org.Apache.mina.common.ByteBuffer;
ByteBuffer
はJARファイル内にあります(もちろん、適切なディレクトリ構造を備えています)。そのjarファイルとその他の必要なファイルは、.Javaファイルと同じディレクトリにあります。
次に、次の行を使用してコンパイルします。
javac -cp ".;*.jar" MyRtmpClient.Java
しかし、私はエラーを受け取ります:
MyRtmpClient.Java:3: package org.Apache.mina.common does not exist
import org.Apache.mina.common.ByteBuffer;
プロジェクトにjarファイルを含めるにはどうすればよいですか?
コマンドラインは正しいが、いくつかの考慮事項があります。
あなたが述べたように、JARファイルは適切なディレクトリ構造を持っていると仮定しています。
javacは、クラスパス引数の* .jarを理解しません。各jarを明示的に指定する必要があります。例えば.
javac -cp ".;mina.jar" MyRtmpClient.Java
Javac JDK 6以降では、(。jarがないことに注意してください):
javac -cp ".;*" MyRtmpClient.Java
特別な便宜として、*のベース名を含むクラスパス要素は、ディレクトリ内のすべてのファイルのリストを拡張子.jarまたは.JARで指定することと同等と見なされます。
たとえば、ディレクトリfooにa.jarとb.JARが含まれている場合、jarファイルの順序が指定されていないことを除き、クラスパス要素foo/*はA.jar; b.JARに展開されます。指定されたディレクトリ内のすべてのjarファイルは、隠しファイルも含め、リストに含まれます。単に*で構成されるクラスパスエントリは、現在のディレクトリ内のすべてのjarファイルのリストに展開されます。
あなたの場合、JAVACはjarファイルを見つけることができないと思います。
してみてください:
PROJECT_PATH
-lib\a.jar
-src\package\b.Java
cd @PROJECT_PATH
javac -classpath lib\a.jar src\package\b.Java
ユーティリティfind
およびtr
を自由に使用できる場合(たとえば、Linuxを使用している場合)、次のようにすることができます。
javac -cp .:`find * -name "*.jar" | tr "\n" ":"` MyRtmpClient.Java
現在のディレクトリとそのすべてのサブディレクトリにあるすべてのjarファイルが追加されます(シェルコマンドはすべてのjarファイルし、コロンをセパレータとして区切ります)。
find * -name "*.jar"
は、ルートが現在のフォルダーである階層内のすべてのjarファイルを検索してリストします。find
の出力を次のコマンドの入力に接続します。tr "\n" ":"
は、すべてのnewline文字をcolon文字に置き換えます。おそらく以下の構文はWindowsのDOSコマンドで動作します
javac -cp ".;first.jar;second.jar;third.jar" MyRtmpClient.Java
Java 8、上記のオプション "。; *"などは機能しないようです。私は試してみました:javac -cp '<location of jars>/*' MyRtmpClient.Java
動作:
<location of jar>
には/ usr/local/classes/*または/ home/developer/MyProject/*を指定できます