为了在PHP Web应用程序中使用JavaScript进行一些基本的自定义,我试图使用PHP-SpiderMonkey库。我的一些开发盒没有最新的,运行正常的SpiderMonkey软件包。因此,为了保持开发的进展,我编写了一个非常简单的包装器rhino
来完成这项工作 - 再次,用于开发和测试目的。
这似乎是在一台机器上工作。当从命令行运行PHP脚本时,它适用于所有计算机。但是,当通过Apache运行时,它会产生以下错误:
Exception in thread "main" java.lang.NullPointerException at
java.lang.VMClassLoader.defineClass(libgcj.so.10) at
java.lang.ClassLoader.defineClass(libgcj.so.10) at
java.security.SecureClassLoader.defineClass(libgcj.so.10) at
java.net.URLClassLoader.findClass(libgcj.so.10) at
gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.10) at
java.lang.ClassLoader.loadClass(libgcj.so.10) at
java.lang.ClassLoader.loadClass(libgcj.so.10) at
gnu.java.lang.MainThread.run(libgcj.so.10)
我是否需要以权限方式执行某些操作或$PATH
- 从Apache / httpd进程中使rhino
在PHP中正确执行? (在CentOS 6上)
从控制台和通过Apache,java --version
产生:
java version "1.5.0"
gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-4)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
答案 0 :(得分:0)
我有几点建议。
首先,考虑使用gcj
以外的Java虚拟机实现。这可能很容易成为一个gcj
错误,如果不完全匹配您的环境,我们就无法追查。您是否还在命令行上使用gcj
或使用其他一些Java实现?这可能是关键的区别。
如果这对你来说不是一个真正的选择,我没有证据支持我的信念,但我会尝试将Rhino优化级别设置为-1,如果你还没有。当使用0或1运行时,Rhino会在类级别尝试一些积极的优化技术,这些可能会让gcj
混淆。