0

私はクラスパスなどをいじっていました。そして、私が完全に得られない何かがあります...

次のように、dir構造に2つのファイルがあると仮定します。

[current dir]
|
org
|
amigo
|
|---A.class
|---B.java

クラスA:

package org.amigo;
public class A {}

クラスB:

package org.amigo;
public class B extends A {}

これまでのところ良い...今、current dir私たちが呼び出す

javac org\amigo\B.java

これにより、クラスが正常にコンパイルされます。次にやってみましょう

javac -cp . org\amigo\B.java

これも機能します。しかし...私たちが走ろうとすると

javac -cp .:org org\amigo\B.java

次のようになります。

cannot find symbol
symbol: class A
public class B extends A {
                       ^
1 error

Soooooo ....私の質問は-どうしてこれが機能しないのですか?

(もちろん、置き換え-cp .:org-cp .:[any dir]も同じ結果を得ることができます。)

私が理解しているように(私は?... -_-)-classpath、必要なクラスを検索するディレクトリを指定しましょう。したがって、A.classがこれらのディレクトリの1つに存在する場合、それはとにかく機能しませんか?つまり、-cp .オプションだけが機能しました!

4

1 に答える 1

0

Windowsでは、パス区切り文字は';'です。したがって、「lookin。andinorg」と言う代わりに、VMがクラスを検索する必要があるパスは「。:org」であり、これは存在しないことを明示的に示しています。しかし同時に、VMが現在のディレクトリを検索することを禁止しているため、クラスが見つかりません。

于 2012-12-10T17:24:13.143 に答える