2017-09-28 19 views
-2

Jsoupライブラリを使用してHTMLを解析するJavaプログラムがあります。コロン(:)は、パスの後にコマンドラインで何を意味するか

プログラムをコンパイルするには、次のコマンドを実行します。 javac -cp jsoup-1.10.3.jar HtmlVerify.javaここで、jsoup jarは同じディレクトリにあります。私は実行プログラム、実行するには

java -cp jsoup-1.10.3.jar HtmlVerifyを、私はエラーを取得する:Error: Could not find or load main class HtmlVerify

しかし、私はそうのようなジャーに:を追加する場合: java -cp jsoup-1.10.3.jar: HtmlVerify、それが動作します。

ここでは何が起こっていますか? :がこの問題を解決するのはなぜですか?

編集:あなたはUNIXシステム上で実行している両方javaコマンド

+3

javaコマンドでは、実行可能クラスの完全修飾名が引数として指定されています。 .javaファイルのパスではありません。あなたの作業コマンドはおそらく動作しません。 ':'はUnixの標準的なパス区切りです。 –

+0

訂正: 'java -cp jsoup-1.10.3.jar HtmlVerify'を実行したときにエラーが発生しました:'エラー:メインクラスHtmlVerify'を見つけることができませんでした。 ' 'java -cp jsoup-1.10.3.jar:HtmlVerify'を実行すると動作します。 – udsrf

答えて

5

クラスパスは:に分割され、各エントリには、必要なクラスを検索するためのパスを考えられています。 空のエントリは言い換えれば.

と同等の、現在の作業ディレクトリを参照します、あなたの前のコマンドが「jsoup-1.10.3.jarのクラスを探してください」を意味しました。

後者は、「jsoup-1.10.3.jarのカレントディレクトリにあるクラスを探してください」という意味です。

HtmlVerifyはカレントディレクトリにありますので、後者のコマンドでしか見つかりません。

JRE/JDKのドキュメントにはこの機能が記載されていないため、代わりに明示的で紛らわしいものを使用することを検討してください。-cp jsoup-1.10.3.jar:. Unixの同じ振る舞いから疑いもなく継承されたことは間違いなくであり、これもPOSIXでもasks that you avoidです。

関連する問題