0

サブプロセスを使用してdjango内から呼び出したいscalaプログラムがあります。

encode_cmd = "/usr/local/share/scala/scala-2.10.0/bin/scala -cp /home/django/code/classes conn {}".format(self.id)
output = subprocess.Popen(encode_cmd, shell = True, stdout = subprocess.PIPE).stdout.read()

このコードはPythonシェルで正常に実行されますが、通常のWebサーバープロセスの一部として実行すると、java.lang.NoClassDefFoundErrorで失敗するscala依存関係(scalaクラスはslickライブラリを参照するなど)を見つけることができません。

mod_wsgiデーモンプロセスの一部として特定のユーザーを指定しようとしましたが、これは違いはありません。

4

1 に答える 1

1

次のようにコマンドにjarを追加する必要があります。-cp /home/django/code/classes:/path/to/slick.jarそれ以外の場合は、パッケージごとに.class'とクラスファイルを含むフォルダーのみが含まれます。

多くのjarがある場合は、いつでもシェル拡張に依存できます。/path/to/dependencies/*.jar

もう1つのオプションは、SBTのxsbt-start-script-pluginまたはMavenのappassemblerプラグインを使用してシェルスクリプトを作成することです。

于 2013-01-11T19:05:50.027 に答える