3

Scala REPLにcom.lambdaworks.crypto.SCryptUtilcryptoから)インポートしようとしています。com / lambdaworks/cryptoを含むJavaディレクトリからREPLを実行しています。

REPLはを見つけることができませんがcom.lambdaworks.crypto.SCryptUtil、オートコンプリートはできますが、それcom.lambdaworks.crypto以降は何も見つかりません。

プロジェクトにパッケージを含めた後、IntelliJ IDEAでREPLを使用したところ、SCryptUtilクラスを見つけることができました。

インポートに必要ないくつかのクラスパスパラメータがありませんか?

4

1 に答える 1

6

REPLはJavaコードをコンパイルしません。ディレクトリ構造を認識しているため、これまで自動完了するだけですが、ディレクトリに到達すると、cryptoクラスファイルは見つかりません。

ディレクトリを上に移動して新しいREPLを開くと、これをより劇的に確認できます。これimport java.com.lambdaworks.cryptoは明らかに実際のパッケージ階層ではありませんが、オートコンプリートが可能です。

この場合、プロジェクトルートに移動し、実行mvn compileしてJavaコードをコンパイルしてから、次のようにREPLを開始できます(まだプロジェクトルートにあります)。

scala -classpath target/classes

これで、をインポートできますcom.lambdaworks.crypto.SCryptUtil

ただし、これはプロジェクトに実行時の依存関係がないためにのみ機能します。他の場合は、クラスパスに他のものを追加するか、依存関係をベイクインしたJARをビルドする(Mavenアセンブリプラグインなど)必要があります。 MavenScalaプラグインmvn scala:consoleの目標を使用します。

于 2012-11-15T17:38:56.093 に答える