我使用 java 7 打包的 java 应用程序在客户计算机上提供了以下堆栈跟踪。它似乎正在尝试使用 Java 8 新的 Javascript 引擎,即使它正在运行 Java 7,有什么想法吗?
java.lang.NoClassDefFoundError: Could not initialize class jdk.nashorn.internal.objects.Global
at jdk.nashorn.internal.runtime.Context.newGlobal(Context.java:778)
at jdk.nashorn.api.scripting.NashornScriptEngine$3.run(NashornScriptEngine.java:425)
at jdk.nashorn.api.scripting.NashornScriptEngine$3.run(NashornScriptEngine.java:421)
at java.security.AccessController.doPrivileged(Native Method)
at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:421)
at jdk.nashorn.api.scripting.NashornScriptEngine.<init>(NashornScriptEngine.java:181)
at jdk.nashorn.api.scripting.NashornScriptEngine.<init>(NashornScriptEngine.java:152)
at jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:141)
at javax.script.ScriptEngineManager.getEngineByName(Unknown Source)
我不知道他是否安装了 Java 8(但我问过),但我知道他实际上是在使用 Java 7 来运行应用程序,因为我在启动时会自动检查和记录。这使
18/02/2014 21.47.09:com.jthink.songkong.cmdline.SongKong:writeSystemInfo:INFO: SongKong 1.17.0 using Java 1.7.0_45 24.45-b08 32bit on Windows 7 6.1 x86 初始化成功
失败的代码很简单:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");