2

私はスカラ言語の簡単な例で作業しようとしました. 無事にインストールsbtできました。実行するsbt -hと、sbt からのヘルプ メッセージが表示されます。

Usage: sbt [options]

  -h | -help         print this message
  -v | -verbose      this runner is chattier
  -d | -debug        set sbt log level to debug
  -no-colors         disable ANSI color codes
  -sbt-create        start sbt even if current directory contains no sbt project
  -sbt-dir   <path>  path to global settings/plugins directory (default: ~/.sbt)
  -sbt-boot  <path>  path to shared boot directory (default: ~/.sbt/boot in 0.11 series)
  -ivy       <path>  path to local Ivy repository (default: ~/.ivy2)
  -mem    <integer>  set memory options (default: 1536, which is -Xms1536m -Xmx1536m -XX:MaxPermSize=384m -XX:ReservedCodeCacheSize=192m) ....

しかし、scala割り当てを使用してディレクトリで実行しようとすると(Courseraコースです)、エラーが発生しました:

nazar_art@nazar-desctop:~/scala/example$ sbt
Detected sbt version 0.12.1
Starting sbt: invoke with -help for other options
Error occurred during initialization of VM
Could not reserve enough space for object heap

ただし、sbt コマンド プロンプトを開く必要があります。このようにsmt:

shell$ cd /path/to/progfun-project-directory                        # This is the shell of the operating system
shell$ sbt
> _                                                                 # This is the sbt shell

アップデート:

この次の行を追加した後

java -Xms64M -Xmx256M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=64M -jarディレクトリ名 $0/sbt-launch.jar "$@"

/usr/bin次の出力が表示されます。

nazar_art@nazar-desctop:/usr/bin$ sbt
bash: /usr/bin/sbt: Permission denied
nazar_art@nazar-desctop:/usr/bin$ sudo sbt
sudo: sbt: command not found

-なぜこれが起こるのですか?
- この問題を解決するにはどうすればよいですか?

4

2 に答える 2

2

まず、例のフォルダー名 (および sbt をインストールしたフォルダー名) に "!" を含めることはできません。これはおそらく他の特殊文字にも当てはまります。さらに、パスにスペースのないフォルダーに SBT をインストールすることをお勧めします (examples フォルダーも同様です)。

たとえば、次のようなパスに SBT (またはサンプル フォルダー) をインストールした場合:

/Users/dashti/My Programs/sbt-0.12.1

次のようなパスで再インストールできます。

/Users/dashti/MyPrograms/sbt-0.12.1

この名前の変更を適用することで、エラーがなくなった場合は、この投稿の残りの部分を無視してください。

それ以外の場合、前述のエラーを修正するには、まず sbt 実行可能スクリプトを見つけ、それを編集して問題を修正します。

UNIX ベースのオペレーティング システムを使用している場合は、次の手順に従ってください。

1- SBT の検索: ターミナルを開き、次のコマンドを入力します。

which sbt

次のようなパスを受け取ります。

/Users/dashti/Documents/scala-2.10.0/bin/sbt

このファイルには、次のような Java プログラムを実行するためのコマンドがあります。

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=128M -jar `dirname $0`/sbt-launch.jar "$@"

2- sbt スクリプトを編集します。ターミナルで次のコマンドを入力します。

vim /Users/dashti/Documents/scala-2.10.0/bin/sbt

このファイルを編集することができ、おそらくメモリ使用量の引数をより低い仕様に変更する必要があります (sbt を実行するのに十分な RAM があるかどうかを検討する必要があります)。たとえば、これはより良い選択です。

java -Xms64M -Xmx256M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=64M -jar `dirname $0`/sbt-launch.jar "$@"
于 2013-08-09T23:11:34.340 に答える
1

SBT は、JVM に割り当てられるより多くのメモリを必要とします。

これはで行うことができますbuild.sbt:

javaOptions ++= Seq(
    "-Xms64m",
    "-Xmx256M",
    "-XX:+CMSClassUnloadingEnabled",
    "-XX:MaxPermSize=64M"
);

sbtファイルを作成して(拡張子なしで)実行する./sbt方が良いですが、以下のコード(@MohammadDashtiの提案)ではsbt-launch.jar、プロジェクトフォルダーにある必要があります。

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled \
-XX:MaxPermSize=128M -jar `dirname $0`/sbt-launch.jar "$@"

後で、無料の JRebel for Scala ライセンスを使用して、保存時に変更を追加javaagent:/path/to/jrebel -Drebel.remoting_plugin=trueおよび再デプロイできます。

于 2013-08-10T00:30:04.983 に答える