2

これは確かに非常に単純な問題かもしれませんが、私はJavaにまったく慣れていないため、解決方法がわかりません。

StdRandom のように定義されたいくつかのクラスを含む stdlib.jar ファイルがあり、プログラムでそれらを使用する必要があります。stdlib.jar のようなファイルを使用するには、デフォルトのパッケージを使用する必要があることを読みました。そこで、以下のプログラムから「package algs4」を削除しました。しかし、うまくいきませんでした。

package algs4;
public class PercolationStats
{
   //Some method declarations
   public static void main(String[] args)
   {
      //Some code
      for(int counter=0; counter<T; counter++)
      {
        while(!p.percolates())
        {
            iIndex = StdRandom.uniform(N);
            jIndex = StdRandom.uniform(N);
            ...
        }
      }



} 

このプログラムをコンパイルするたびに、次を使用します。

javac -cp . algs4/PercolationStats.java

エラーが発生します:

algs4/PercolationStats.java:30: cannot find symbol
symbol  : variable StdRandom
location: class algs4.PercolationStats
                iIndex = StdRandom.uniform(N);

また、次を使用してコンパイルしようとしました:

javac -cp .:stdlib.jar algs4/PercolationStats.java

しかし、エラーは同じままです。

これは良い方法ではありませんが、.jar ファイルからファイルを抽出して StdRandom.java ファイルを作成しましたが、それでも機能しません。

stdlib.jar を含むすべてのファイルは同じディレクトリにあります。

どうすればいいですか?

編集:将来の参照のために質問をより精巧にするために: プログラムで使用される stdlib.jar は「デフォルト」パッケージにありました。

4

2 に答える 2

6

編集:StdRandomパッケージに含まれていない場合は、実際にコードもパッケージから取り出す必要がある場合があります。(試してみます。パッケージに含まれていないクラスを操作する必要があったのは久しぶりです。)

一般に、クラスがパッケージに含まれているバージョンを取得する方がはるかに優れています。stdlib.jar


どのパッケージが含まれているかはわかりませんStdRandom。おそらく、importステートメントが必要なだけです。

import foo.bar.StdRandom;

...foo.barを含むパッケージはどこにありますかStdRandom。または、ワイルドカードを使用してパッケージ内のすべてのクラスをインポートできます。

import foo.bar.*;

詳細については、Java チュートリアルの「パッケージの作成と使用」の部分を参照してください。

ただし、クラスパスに必ず含める必要があるstdlib.jarため、2番目のコンパイル方法に固執してください。

IDE (Eclipse など) を使用すると、これらすべてを簡単に行うことができ、必要に応じて import ステートメントを作成することもできます。

于 2012-08-29T06:06:46.283 に答える
0

でコンパイルしてみてください

java -classpath "lib/*:." my.package.Program

また

java -cp "Test.jar:lib/*" my.package.MainClass

詳細については、Java クラスパスに複数の jar を設定するを参照してください。

于 2012-08-29T06:26:10.703 に答える