2016-12-22 4 views

答えて

0

クラスは、デフォルトのパッケージです。 this answerによれば、既定のパッケージからクラスをインポートすることはできません。したがって、別のパッケージに移動する必要があります。そうしなければ、リフレクションを使用する必要があります。

+0

あなたは私のプロジェクトの下にあるファイルを意味しますか?パッケージsrcはスルーリフレクションを使わないと直接使用できませんか? –

+0

私は 'src'ディレクトリを意味するのではなく、Javaパッケージを表し、' java'ファイルの先頭にも宣言されているディレクトリです。クラスが属するパッケージがなければなりません。そうでない場合、デフォルトのパッケージが暗黙的に使用されます。 'src'ディレクトリにはソースコードが含まれています。ソースコードから構築されたjarファイルには存在しません。 – mm759

0

クラスからではなく、パッケージからのメソッドの呼び出しです。
jarに属するクラスからメソッドを呼び出すときにjarを指定する必要はありません。あなたの瓶はクラスパスにありますか
libがクラスパスフォルダに含まれているスクリーンショットでは、コード内のクラスをインポートして使用できます。

ここでは、あなたのjarのクラスは、サードパーティ製のライブラリにとって奇妙なデフォルトパッケージ(パッケージ名なし)を使用しています。デフォルトのパッケージは、クライアントコードからのアーカイブのクラスを自然に参照して使用することができないため、お勧めできません。
正しいバージョンのjarを使用しているかどうかわかりません。その時
ルック:

http://grepcode.com/snapshot/repo1.maven.org/maven2/com.googlecode.princeton-java-introduction/stdlib/1.0.1

これはedu.princeton.csパッケージのクラスが含まれます。パッケージに

を、あなたがこれを宣言することができます:あなたは、クラスを作成することができ

:たとえば

そのようなBinaryInを使用してください:

package main; 
import edu.princeton.cs.BinaryIn; 

public class MyClass(){ 
    public static void main(String args[]){ 
    BinaryIn in = new BinaryIn(); 
    } 
} 
+0

ありがとうございます。私は、デフォルトのパッケージでクラスを使用すると、デフォルトのパッケージをインポートする必要はありません。私のIDE(intellij ideal14)に間違いがなかったので、それは正しい宣言ですが、あなたの正しいコードをありがとうございます。でも、私はまだ自分の書き方でどのように動作するのか知りたいのですが。 –

+0

rheクラスを実行したときのあなたのエラーはどれですか。クラスを投稿しますか? – davidxxx

+0

StdIn.class.getPackage()。getName();コンソール:例外 "main" java.lang.NullPointerException.StdInが見つかりましたが、Ctrlキーを押しながら "Stdln"をクリックしてソースコードを取得できることを理解できます。 –

関連する問題