Jython 2.7b4 will not webstart: ImportError: No module named site

Jython 2.7b4 will not webstart: ImportError: No module named site

我将我的应用程序注入 jython-standalone-2.7-b4.jar。这是我在 Web 启动我的应用程序时在客户端计算机的 WebStart 控制台中看到的内容:

Java Web Start 11.31.2.13
Using JRE version 1.8.0_31-b13 Java HotSpot(TM) 64-Bit Server VM
User home directory = C:\Users\me
...
#### Java Web Start Error:
#### null

当我点击 'Details' 时,我发现了以下异常堆栈跟踪:

ImportError: No module named site

    at org.python.core.ImportError(Py.java:328)
    at org.python.core.imp.import_first(imp.java:842)
    at org.python.core.imp.load(imp.java:695)
    at org.python.util.PythonInterpreter.<init>(PythonInterpreter.java:118)
    at org.python.util.PythonInterpreter.<init>(PythonInterpreter.java:94)
    at org.python.util.InteractiveInterpreter.<init>(InteractiveInterpreter.java:39)
    at org.python.util.InteractiveInterpreter.<init>(InteractiveInterpreter.java:28)
    at org.python.util.InteractiveConsole.<init>(InteractiveConsole.java:67)
    at org.python.util.InteractiveConsole.<init>(InteractiveConsole.java:53)
    at org.python.util.InteractiveConsole.<init>(InteractiveConsole.java:33)
    ...

Jython2.7b1 为我工作。我尝试了 Jython2.7b3,但也失败了。

由于 Web Start 环境中的 class 加载程序差异,Jython 无法在独立 jar 文件内的 Lib 目录中找到文件。要解决此问题,您需要稍微重新安排独立 jar 的内容。以下脚本会将独立的 jar 转换为在 Web Start 环境中可用的东西:

#!/bin/sh
# Converts a Jython standalone jar into something usable with Java Web Start
if [ -z  ]; then
  echo "Please give the path to the standalone jar as the first argument."
  exit 1
fi

CURRDIR=$(pwd)
JAR_PATH="$CURRDIR/"
CONVERTED_JAR_PATH="$CURRDIR/jython-webstart.jar"
TEMPDIR=$(mktemp -d)
cd "$TEMPDIR"
jar xf "$JAR_PATH"
rm -rf Lib/test  # including Jython's own unit tests is pointless
java -jar "$JAR_PATH" -m compileall Lib
find Lib -name "*.py" -delete
mv Lib/* .
rmdir Lib
jar cf "$CONVERTED_JAR_PATH" *
rm -rf "$TEMPDIR"

接下来您可能 运行 进入 Jython bug 2283。要解决此问题,请将 python.home 系统 属性 设置为指向任何现有目录。