3

ホストシステムから共有されているディレクトリにプロジェクトのソースコードを使用して、VirtualBoxVMでPlayフレームワークアプリケーションを実行しています。フレームワークの自動リロード機能は機能しません。

これは(おそらく)ファイルシステムがローカルではないため、JNotifyがソースファイルへの変更を検出できないことが原因です。NFSとvboxsfの両方に同じ問題があります。

これを回避する方法はありますか?

Play Frameworkには、JNotifyが使用できないシステムでの変更を検出するためのフォールバックメカニズムが組み込まれています。どういうわけかフォールバックメカニズムを強制的に選択することは可能ですか?(パフォーマンスへの影響は許容範囲内です。)

他の解決策はありますか?

4

3 に答える 3

3

私はここで同じ状況に遭遇しました。~runPlay / SBTコンソール内で(の代わりに)に切り替えると、 ( runJosh Suerethによると)JNotifyがバイパスされ、問題が解決したように見えます。

于 2013-02-13T20:03:16.467 に答える
1

私自身の質問に答える:これを達成するための簡単な方法はないようであり、この種の機能が近い将来ネットワークファイルシステムで利用可能になるとは思えません。

Playフレームワークのsbtプラグインをハックして、PlayReloaderトレイトをJNotifyが利用できないかのように動作させるのは簡単ですが、控えめに言ってもそれは汚いハックです。

最善の解決策は、完全に自動的にプロビジョニングされた開発環境の利点の一部が失われた場合でも、PlayアプリケーションをVMから移動してホスト上で実行することです。

于 2013-01-13T22:49:43.350 に答える
1

James Roperによると、play 2.3.2以降を使用している場合は、build.sbtに以下を追加できます。

PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)

この問題に関するJamesRoperの完全な回答へのリンクは次のとおりです。

于 2014-08-04T17:23:27.313 に答える