1

Java プログラミングと Linux 環境は初めてです。また、クラスパスとは何か、JVM がクラスを見つける方法、JAVA API など、いくつかのことを理解するのが難しいと感じています。

たとえば、今日、1)employee と 2)employeetest という 2 つの単純なクラスを作成し、それらを同じフォルダーに配置しました。(employeetest には「main」メソッドがあり、コードで employee を使用します。) employeetest をコンパイルし、「javac」コマンドを使用して実行しました。、employee.classもフォルダーに追加されていることがわかりました。これは、JVM が実行に必要なすべてのファイルを自動的にコンパイルするということでしょうか?

次に、従業員クラスを現在のディレクトリの外に配置し、employeetest を実行しようとしました。についてエラーが発生しましたClassNotFound!! なぜそうなのですか?JVM が他のディレクトリで従業員クラスを検索しなかったのはなぜですか?

従業員を配置したディレクトリは、Linuxのクラスパスまたは「PATH」にもありますか? 技術的には、PATHにある他のディレクトリも検索する必要がありますか?

私が間違っている場合は訂正してください。インターネットで非常に多くのことを読んでいるため、これらの概念を明確に理解することができませんか?

SO JVM はどこでクラスを検索しますか? 「メイン」のクラスが配置されているのと同じディレクトリにありますか?

私のマシンでは、エコーをして$JAVA_HOMEも何も印刷されません。しかし、それでも私のコマンドjavajavacコマンドは正しく実行されますか? なぜそうなのですか?とはどういう意味$JAVA_HOMEですか? JDKはどこにありますか? その機能は何ですか?

4

2 に答える 2

1

Java/Java コンパイラのいくつかの基本を次に示します。

Java コードを記述します ---JVM はクラス ファイルをロードします。クラス ファイルは実際に Java をより移植性の高いものにするバイトコードです (プラットフォームに依存しません)。

  • あなたの状況 「foo」というフォルダー内のソースをコンパイルしたので、どこからでもコンパイルできるようにするには、クラスファイルへのパスを指定する必要があります

だから javac -classpath somepathtothatfile

exportコマンドを使用して、現在クラスファイルがある場所へのパスを設定すると、そのエラーは削除されます

export CLASSPATH="pathtosomelocation" のように

Jvm は、Windows の bin ディレクトリ内のファイルを検索します -c://programfiles/java/jdk(version)/bin/

Linuxで

/usr/lib/jvm/somejavaversion/bin

見てみな

Java 開発のための 2 つのこと

JRE-これは単なるランタイムのものであり、JDKを実行するためだけのものです-コードを開発し、必要なAPIへのアクセスを取得する必要があります。

于 2013-04-24T05:10:22.667 に答える