0

我有一个 scala 程序,我想使用子进程从 django 中调用它:

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 shell 中运行良好,但是当作为正常 web 服务器进程的一部分运行时,它找不到 scala 依赖项(例如,scala 类引用 slick 库)失败并出现 java.lang.NoClassDefFoundError。

我尝试将特定用户指定为 mod_wsgi 守护进程的一部分,但这没有什么区别。

4

1 回答 1

1

您应该像这样在命令中添加 jars: -cp /home/django/code/classes:/path/to/slick.jar,否则它只包括 .class' 和包含每个包的类文件的文件夹。

如果你有很多罐子,你总是可以依赖 shell 扩展:/path/to/dependencies/*.jar

另一种选择是使用 SBT 的xsbt-start-script-plugin或 Maven 的appassembler插件来创建 shell 脚本

于 2013-01-11T19:05:50.027 回答