为了允许在带有JavaScript的PHP应用程序中进行一些基本的定制,我尝试使用库。我的一些开发盒没有最新的、功能良好的SpiderMonkey包可用。因此,为了继续开发,我编写了一个非常简单的rhino包装器来完成这项工作--同样,也是为了开发和测试目的。
这似乎是在一台机器上工作。当从命令行运行脚本时,它可以在所有的机器上工作。但是,当通过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-wise来使rhino在Apache/httpd进程中正确执行?(在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.发布于 2014-04-22 22:35:13
我有几个建议。
首先,考虑使用gcj以外的Java实现。这很容易成为一个gcj bug,如果不与您的环境完全匹配,我们就无法真正找到它。您也是在命令行上使用gcj,还是使用其他一些Java实现?这可能是关键的区别。
如果这真的不是一个选项,我没有证据支持我的信念,但我会尝试将Rhino优化级别设置为-1,如果您还没有。当使用0或1运行时,Rhino会在类级别上尝试一些积极的优化技术,这可能会使gcj感到困惑。
https://stackoverflow.com/questions/23223973
复制相似问题