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
系统 属性 设置为指向任何现有目录。
我将我的应用程序注入 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
系统 属性 设置为指向任何现有目录。