草庐IT

Scripting

全部标签

java - Java ScriptEngine 的安全问题

我刚开始使用JavaScriptEngine对我的应用程序做一些扩展,然后我注意到我可以在脚本中导入所有java类并不受限制地使用它们。有没有办法指定脚本可以使用哪些类?我不希望他们做java.lang.System.exit(1);这样的事情 最佳答案 那么,您似乎需要了解JavaSecurityManager。这是一个很大的主题,您可能需要仔细阅读它,如果您无法让它为您工作,然后发布一个更具体的问题。 关于java-JavaScriptEngine的安全问题,我们在StackOver

java - 哪些 Java 类/包可以安全地列入安全沙箱中的白名单?

作为我正在开发的基于Java的游戏的一部分,我计划嵌入Groovy(或可能是其他一些)脚本语言以允许较低级别的模组支持以及对话和任务文件等事物在游戏中产生效果的方式世界。但是,我的目的和潜在mod作者的目的可能会有所不同,如果可能的话,我想避免删除不危险的语言功能。虽然我的具体需求当然会与公共(public)规范有所不同,但我仍然很好奇是否存在可以在不给用户带来重大风险的情况下访问的Java包和类的任何普遍认可的白名单(无论多么短)。 最佳答案 I'mneverthelesscuriousifthereisanygenerallya

java - 从java运行oracle sql脚本

这个问题在这里已经有了答案:HowtoExecuteSQLScriptFileinJava?(12个答案)关闭4年前。我有一堆应该在javaweb应用程序启动时升级数据库的sql脚本。我尝试使用ibatisscriptrunner,但在定义触发器时它失败了,其中“;”字符不标记语句的结束。现在我已经编写了我自己的脚本运行器版本,它基本上可以完成这项工作,但会破坏可能的格式和注释,尤其是在“创建或替换View”中。publicclassScriptRunner{privatefinalDataSourceds;publicScriptRunner(DataSourceds){this.d

使用 Nashorn 编写 Java 脚本 (JSR 223) 和预编译

我正在通过JSR223使用Nashorn来执行用户输入脚本的小片段:publicInvocablebuildInvocable(Stringscript)throwsScriptException{ScriptEngineengine=newScriptEngineManager().getEngineByName(ENGINE);engine.eval(functions);engine.eval(script);return(Invocable)engine;}不同的用户脚本调用在静态中央库中定义的JavaScript函数(保存在上面代码片段中的functions字符串中)。每次我

java - 如何从代码库中删除 System.out.println

我们有一个巨大的(旧的遗留java)代码库,其中许多文件(大约5k)都有System.out.println。出于清理/性能原因,我们计划删除它们。我们如何编写一个脚本来替换它们而不在代码中引入任何问题?脚本不能盲目删除它们,因为以下情况可能会成为问题:if()some.code...elseSystem.out.println(...);DB.close();我正在考虑将它们替换为“;”。这将处理上述情况。你看到任何其他问题吗?还有其他建议吗? 最佳答案 你有没有考虑过这个愚蠢的案例:System.out.println("Pri

java - 在 javax.scripting javascript 环境中导入 map

我在javax.scripting映射实现中看到了一些奇怪的行为。在线示例显示了一个example添加到js环境中的列表:ScriptEngineManagermgr=newScriptEngineManager();ScriptEnginejsEngine=mgr.getEngineByName("JavaScript");ListnamesList=newArrayList();namesList.add("Jill");namesList.add("Bob");namesList.add("Laureen");namesList.add("Ed");jsEngine.put("n

c++ - 轻量级 C++ 脚本库

我目前使用QtScript用于我的C++应用程序中的脚本功能,但它在cpu上相当“繁重”。当线程评估循环中的所有脚本时,cpu使用率增加到90%-100%。即使我每5个脚本让它休眠1毫秒,它的CPU使用率仍保持在75%以上。有没有其他比QScript更轻量级的易于实现的脚本框架?编辑:我现在意识到这是正常行为,而不是QtScript中的一些占用空间的错误。听到有哪些类型的(轻量级)脚本库可用仍然很有趣。 最佳答案 看看Lua,它经常在游戏中使用,所以性能一定很好。 关于c++-轻量级C+

c++ - 如何确定 C++ 用户类型是否已在 tolua 中注册

我们使用tolua++为C++类生成Lua绑定(bind)。假设我有一个C++类:classFoo{//SomemethodsinFoo,irrelevanttoquestion.};和一个包含以下内容的tolua.pkg文件classFoo{};考虑以下函数:voidcall_some_lua_function(lua_State*luaState){Foo*myFoo=newFoo();tolua_pushusertype(luaState,(void*)myFoo,"Foo");//MorecodetoactuallycallLua,irrelevanttoquestion.}现

c++ - 扩展到 Web 服务器以使用 C++ 编写脚本?

嗯,我想知道是否有任何Web服务器扩展允许我使用C++而不是像php这样的脚本语言来“编写脚本”?一些伪代码:#includecoutthisisawebpage";我知道这听起来很傻,但我真的很想知道是否存在这样的事情。或者也许有一些东西允许从Web服务器将编译后的C++代码作为网页运行? 最佳答案 好吧,正如评论中所说,您可以使用CGI做您想做的事。如果您需要使用C++制作Web应用程序,WT可能是您想要的框架:http://www.webtoolkit.eu/wt 关于c++-扩展

c++ - 如何在 QtScript 中使用 C++ std 复数

我试图找出如何在QtScript中使用复数,以便可以从QtScript调用用复数参数定义的槽。用户还应该可以从脚本访问复数的基本代数(+、-、exp、...)。只是为了说明,我想调用的是:#includetypedefcomplexComplex;classMyCppClass:publicQObject{Q_OBJECTpublic:...publicslots:voidmySignal(ComplexrCValue);!!有什么想法吗?谢谢! 最佳答案 我认为您必须在QtScript中实现复杂的代数(类似于http://exam