相当于Ruby中Java语言的“ require”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了相当于Ruby中Java语言的“ require”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2361字,纯文字阅读大概需要4分钟。
内容图文
![相当于Ruby中Java语言的“ require”](/upload/InfoBanner/zyjiaocheng/688/4d9f73934a3a4e17a82d6d0590393f07.jpg)
如何将另一个文件“要求”到Javascript中的现有文件中?有什么与Ruby的“ require”或“ load”类似的东西吗?
>注意:我在服务器(Rhino)中使用JS
原因:我只需要访问其他JS文件中的方法.
更新:仅当从cmd行执行时,此方法才有效.当我尝试以编程方式调用它时,它失败了.这是我的代码:http://pastie.org/1240495
解决方法:
要在Java嵌入式js中使用load函数,必须首先在脚本上下文中公开它.也许有一种方法可以用Java来实现,但是您也可以使用js来实现.
免责声明:此解决方案使用源于我一直在从事的Apache许可项目中获取的源代码.您可以看到原始源文件here.
该js文件设置您的全局变量,并位于名为setupglobals.js的文件中:
var shell = org.mozilla.javascript.tools.shell.Main;
var args = ["-e","var a='STRING';"];
shell.exec(args);
var shellGlobal = shell.global;
//grab functions from shell global and place in current global
load=shellGlobal.load;
print=shellGlobal.print;
defineClass=shellGlobal.defineClass;
deserialize=shellGlobal.deserialize;
doctest=shellGlobal.doctest;
gc=shellGlobal.gc;
help=shellGlobal.help;
loadClass=shellGlobal.loadClass;
quit=shellGlobal.quit;
readFile=shellGlobal.readFile;
readUrl=shellGlobal.readUrl;
runCommand=shellGlobal.runCommand;
seal=shellGlobal.seal;
serialize=shellGlobal.serialize;
spawn=shellGlobal.spawn;
sync=shellGlobal.sync;
toint32=shellGlobal.toint32;
version=shellGlobal.version;
environment=shellGlobal.environment;
这是您的原始Java主机文件,现在已扩展为在其他任何脚本之前评估setupglobals.js:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.mozilla.javascript.*;
public class RhinoRunner {
public static void main(String args[]) throws IOException
{
BufferedReader script = new BufferedReader(new FileReader("setupglobals.js"));
BufferedReader script2 = new BufferedReader(new FileReader("example.js"));
Context context = Context.enter();
try {
ScriptableObject scope = context.initStandardObjects();
context.evaluateReader(scope, script, "script", 1, null);
context.evaluateReader(scope, script2, "script2", 1, null);
Function fct = (Function)scope.get("abc", scope);
Object result = fct.call(context, scope, scope, new Object[] {2, 3});
System.out.println(Context.jsToJava(result, int.class));
}
finally
{
Context.exit();
}
}
}
这是您的example.js,现已增强为使用全局加载功能来加载文件hello.js:
function abc(x,y)
{
return x+y
}
load("hello.js")
最后,这是hello.js:
print("hello world!")
执行时,RhinoRunner将打印以下内容:
hello world!
5
内容总结
以上是互联网集市为您收集整理的相当于Ruby中Java语言的“ require”全部内容,希望文章能够帮你解决相当于Ruby中Java语言的“ require”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。