12

2 つの jar ファイルをダウンロードしました。含まれているクラスのいくつかをインポートしたいと思います。どうすればいいですか?

それは私のアルゴリズムのクラスのためです。以下のサイトの指示に従ってみましたが、だめでした。

http://algs4.cs.princeton.edu/code/

クラスパスにjarを追加すると言われているOSX(私はMountain Lionを実行しています)のインストーラーがあります。残念ながら、Dr. Java もインストールされます。Sublime と Terminal を使用したいだけです。私はそれが十分に簡単だと思っていました...

import java.stdlib;

私の Percolation.java ファイルでは、しかし、そのプログラムを javac-ing すると、「パッケージ stdlib が存在しません」というメッセージが表示されます。

import stdlib;

stdlib.jar と algs4.jar の場所を、次の方法で手動で端末の CLASSPATH に追加しました。

export CLASSPATH=$CLASSPATH:/Users/Michael/path/to/jar/algs4.jar:/Users/Michael/path/to/jar/algs4.jar
export CLASSPATH=$CLASSPATH:/Users/Michael/path/to/jar/stdlib.jar:/Users/Michael/path/to/jar/stdlib.jar

私も試してみました

javac -cp $CLASSPATH:/Users/Michael/path/to/jar/algs4.jar:/Users/Michael/path/to/jar/stdlib.jar Percolation.java

しかし、私はまだ取得します

javac Percolation.java
Percolation.java:1: cannot find symbol
symbol  : class stdlib
location: package java
import java.stdlib;
       ^
Percolation.java:2: package java.algs4 does not exist
import java.algs4.WeightedQuickUnionUF;
             ^

何が起きてる?

また、これらの値を OS X マウンテン ライオンの CLASSPATH に永続的に追加する方法もあります。新しいターミナルごとにそのコマンドを実行する必要があります。

4

13 に答える 13

5

ターミナルを使用してプログラムをコンパイルおよび起動している場合は、ターミナル ウィンドウで、次の設定から始めますCLASSPATH

$ export CLASSPATH=$CLASSPATH:/Users/Michael/path/to/jar1.jar:/Users/Michael/path/to/jar2.jar

次に、入力echo $CLASSPATHして、jar が参照されていることを確認できます。

次に、同じターミナル ウィンドウで、javac を使用してクラスをコンパイルします。上記の設定はCLASSPATH、現在のターミナル ウィンドウとそこから起動されたプロセスにのみ適用されます。

CLASSPATH別の方法として、を javac に渡すこともできます。

$ javac -cp $CLASSPATH:/Users/Michael/path/to/jar1.jar:/Users/Michael/path/to/jar2.jar MyClass.java

CLASSPATH今後のターミナル セッションでこれを保持するには、上記の行をホーム ディレクトリexportのファイル.profileに追加します。

于 2012-09-18T16:41:34.163 に答える
3

この質問に答えるには時代遅れですが、プリンストンアルゴリズムコースの将来の参加者にとって役立つかもしれません. 環境 java に CLASSPATH を追加した後、パッケージからクラスを取得しますが、インポート コマンドでエラーが発生します。import algs4 と stdlib をソース ファイルから削除する必要があり、コンパイルはスムーズに実行されます。

このソリューションは、zsh を使用する Ubuntu 12.04 で機能します。

于 2013-08-29T07:09:18.317 に答える
2

あなたはおそらくクラスパスのものを正しく持っています。ただし、インポートしようとしているクラスは呼び出されない場合がjava.stdlibあります。完全修飾パッケージ名をインポートする必要があります...おそらく。のようなものですorg.somecompany.ourlibrary.stdlib。したがって、あなたは必要になるでしょう

import org.somecompany.ourlibrary.stdlib

ファイルの先頭にPercolations.java残りのインポートステートメントがあります。

于 2012-09-18T17:34:52.317 に答える
1

Percolation プログラムは独自のパッケージに含まれていますか? その場合は、ファイルからすべてのパッケージ ステートメントをコメント アウトし、再コンパイルして、既定のパッケージに入れてみてください。また、パッケージにalgs4は何も入っておらず、javaすべて別物です。

于 2012-09-19T02:47:52.670 に答える
0

オプションで起動javac-classpath <path_to_jar>ます。または、環境変数を編集して、CLASSPATH使用するクラスを含む JAR が含まれるようにします。

于 2012-09-18T16:36:54.960 に答える
0

クラスのインポートに多くの時間を費やし、「javac -cp .;stdlib.jar mad.java」などの CL オプションを試しましたが、あなたが言及したのと同じエラーが発生していました。
次に、インポートを完全にコメントアウトし、DrJava の設定に 2 つのクラスパスが追加され、%CLASSPATH% 変数が正しい値になるようにしました。今は単に動作します。幸運を!

于 2014-07-26T17:54:52.953 に答える
0

パッケージにデフォルトの名前を付けるだけで、正常に機能します。また、その後は、提供されているコードを実行するだけで何もインポートする必要はありません

基礎

章のような

平均

.

于 2014-09-21T15:06:33.757 に答える
0

「型に解決できません」というエラーが表示され、stdlib.jar または algs4.jar ファイルを追加しようとした場合の解決策は次のとおりです。

stdlib.jar と algs4.jar のライブラリは、「デフォルト」パッケージにあります。Java では、名前付きパッケージからデフォルト パッケージのクラスにアクセスすることはできません。名前付きパッケージでライブラリを使用する必要がある場合は、次のパッケージ バージョンを使用できます。

stdlib-package.jar および algs4-package.jar。

これらのファイルは、http: //algs4.cs.princeton.edu/code/からダウンロードできます。

次に、インポートを自動的に追加できます: import edu.princeton.cs.algs4.ClassName

于 2015-01-26T17:08:46.933 に答える
0

私の解決策は、Sublime テキスト エディターに 2 つの新しいビルド システムを追加することでした。1 つはコンパイル用、もう 1 つは実行用です。Tools->Build_system->New_build_system... をメイン メニューから次の 2 つのコード スニペットで使用します。

コンパイル用(ファイルに「algs-compile.sublime_build」という名前を付けました):

{
  "cmd": ["javac", "-cp", "/Users/admin/algs4/stdlib.jar:/Users/admin/algs4/algs4.jar:.", "$file"],
  "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
  "selector": "source.java"
}

実行用 (「algs-run.sublime_build」)

{
  "cmd": ["java", "-cp", "/Users/admin/algs4/stdlib.jar:/Users/admin/algs4/algs4.jar:.", "$file_base_name"]
}

ここでjarファイルへのパスをシステムの正しいパスに置き換えることを忘れないでください。この質問はかなり古いことを理解していますが、これが誰かの役に立てば幸いです。

于 2014-10-03T09:16:34.067 に答える
0

私はこれと同じ問題を抱えていました。Renfei Wang の解決策はうまくいきました (彼の回答について直接コメントするにはまだ十分なポイントがありません)。

Sublime で、に移動しPreferences: Browse Packages>JavaC.sublime_buildます。

これが私のものです:

{
    "cmd": ["javac", "-cp", "/Users/jason/Documents/lib/*:./","$file"],
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "selector": "source.java"
}

/Users/jason/Documents/lib/*:/パッケージを保持するディレクトリの場所をSublimeに知らせて、ビルド時に最初にそれらのパッケージをロードするようにします。

于 2015-06-27T04:54:50.580 に答える