2011-10-22 15 views
3

私はorg.w3c.dom.Documentをインポートするファイルを持っています。コンパイルと実行はうまくいきますが、このパッケージをどこに見つけたらいいのか分かりません。どのように動作するのか不思議です。私はlocateコマンドを使ってorg.w3c.domを見つけましたが、何も得られません。これらのパッケージはどこにありますか?私の検索結果はCLASSPATH環境変数を示唆しているようです。これは正しいです?いずれにしても、CLASSPATH変数がどのようになっているかを知る方法はわかりません。私のシェルが知っている環境変数ではないようです。java:インポート、クラスパス、およびパッケージ

+0

私の意見は、とにかくCLASSPATH環境変数を使うのは悪い考えです。 -classpathパラメータをjavaまたはjavacのどちらかに渡す方が良い方法です。 – MeBigFatGuy

答えて

2

これはコアライブラリの一部(rt.jar)なので、Java JREをインストールした場所はどこにでもあります。具体的には$JAVA_HOME/jre/lib

jarコマンドを使用して.jarファイルを見ることができます。

jar tvf rt.jar 

このクラスには、そのjarのすべてのクラスがリストされています。

この場所は、JVMによって自動的に検索されるため、CLASS_PATH環境変数には不要であることも、含まれていないことに注意してください。 (あなたはそれを追加することができますが、それは単に冗長になる)明確にするため

編集:

JVMはデフォルトで<Where_you_installed_jdk>/jre/lib<Where_you_installed_jdk>/jre/lib/extが含まれています。それ以外のものは、-cpオプションを使用してjavaに直接渡すか、CLASS_PATH環境変数に追加するかのいずれかを使用して明示的に追加する必要があります。

のrelaventドキュメントはで見つけることができます:http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html

+0

JAVA_HOME環境変数がないため、locateを使用してrt.jarが見つかりました。この環境変数がないのは問題ですか?それは何であり、誰がそれを設定する責任がありますか? – bhh1988

+0

@ bhh1988 - ファイルがどこにあったかを解説するためにJAVA_HOMEを使用していました。 CLASS_PATHと同様に、Javaプログラムを実行する必要もありません - 私の例で使用したのと同じように、一般的に*他の*もののために使用されていますあなたのマシンにjavaをインストールしました。 –

+0

私は今、感謝を見る! – bhh1988

3

JVMは、必要なパッケージへのalllパスが設定されているクラスパス設定を使用してクラスを見つけます。クラスパスは、いくつかの方法で設定できます。あなたが最初に言及したのはCLASSPATH環境変数です。オプションであり、設定を解除することができます。 2番目の方法は、 "java"実行可能ファイルの明示的なオプション "-cp"です。

また、いくつかのJREランタイム・ジャーがデフォルトで暗黙的にクラスパスに追加されるため、標準パッケージを自分で検索して追加する必要はありません(特にあなたの質問に記載したもの)。

+0

私は参照してください。暗黙的に追加されている他のジャーはありますか?暗黙的にクラスパスに追加されたjarのリストはどこにありますか?私のクラスパスはどうやって見えるのですか? – bhh1988

+0

実際、JDKのインストールディレクトリを見て、ランタイムjar(rt.jar)を確認することができます。しかし、これらのjarはJavaランタイムライブラリの一部であるため、クラスパスには表示されません。 – xappymah

0

は独自のディレクトリから

javac -d ..\..\. -cp ..\..\. messconvener.java

-dをこのようなmessconvener.javaをコンパイルしてみてください - あなたのパッケージのためのディレクトリ構造を作成し

-cp - ユーザー定義クラスを見つけることができるユーザーファイルのクラスパスを提供します。

関連する問題