Javascript 加载Rhino中当前文件的相对路径上的文件

Javascript 加载Rhino中当前文件的相对路径上的文件,javascript,load,rhino,Javascript,Load,Rhino,我正在用Rhino编写一个JavaScript程序,需要加载其他JavaScript文件。但是,内置的load()函数相对于当前目录加载文件,我需要相对于脚本的位置加载它们(以便可以从任何目录调用程序) 在其他语言中,我会使用类似于dirname(\uuuuu FILE\uuuuu)+“/path/FILE”,但Rhino似乎没有\uuuu FILE\uuuuuuu或任何类似的东西。我试图从抛出的异常中提取当前文件,但该文件为空,即以下代码打印“true”: 我试图查看解释器源代码并使用Java

我正在用Rhino编写一个JavaScript程序,需要加载其他JavaScript文件。但是,内置的
load()
函数相对于当前目录加载文件,我需要相对于脚本的位置加载它们(以便可以从任何目录调用程序)

在其他语言中,我会使用类似于
dirname(\uuuuu FILE\uuuuu)+“/path/FILE”
,但Rhino似乎没有
\uuuu FILE\uuuuuuu
或任何类似的东西。我试图从抛出的异常中提取当前文件,但该文件为空,即以下代码打印“true”:

我试图查看解释器源代码并使用JavaJavaScriptBridge,但是我还没有发现任何有用的东西(我可能会查看更多)


有人知道如何在相对路径上加载文件吗?

让用户运行启动程序脚本可能是最简单的方法。如果您使用的是*nix或OS X,则可以将shell脚本放入与所有Javascript相同的目录中,这会在启动之前将目录更改为脚本的目录:

#!/bin/sh
cd `dirname "$0"`
java -jar js.jar your_script.js
如果脚本需要在用户的当前目录中运行,则可以让包装器在命令行中传递其位置:

#!/bin/sh
DIR=`basename "$0"`
java -jar "$DIR/js.jar" "$DIR/loader.js" "$DIR"
然后在loader.js中,使用Rhino的内置参数变量访问“$DIR”:

Rhino的功能已记录在案


在Windows上可能会出现类似的情况;我对CMD.EXE批处理文件了解不多。

我考虑了一个包装器脚本,但只是作为最后的手段。因为似乎没有其他方法,我最终还是用了它。谢谢你的回答。有人知道这个脚本在windows上会是什么样子吗?
#!/bin/sh
DIR=`basename "$0"`
java -jar "$DIR/js.jar" "$DIR/loader.js" "$DIR"
load(arguments[0] + "/another_js_file.js");