小编Joh*_*rms的帖子

JSR223:从脚本调用Java"varargs"方法

我有一个在Java上看起来像这样的方法:

public void myMethod(Object... parms);
Run Code Online (Sandbox Code Playgroud)

但我不能按照脚本的预期调用此方法.

如果,在红宝石中,我这样做:

$myObject.myMethod(42);
Run Code Online (Sandbox Code Playgroud)

它给了我 org.jruby.exceptions.RaiseException: could not coerce Fixnum to class [Ljava.lang.Object

如果我在Javascript中尝试以下内容:

myObject.myMethod(42);
Run Code Online (Sandbox Code Playgroud)

然后它给了我 sun.org.mozilla.javascript.internal.EvaluatorException: Can't find method MyClass.test(number). (#2) in at line number 2

当然,如果我更改签名以获取单个对象,那么它可以工作.

我认为这是因为有人沿线不知道如何转换,说IntegerInteger[]与在第一位置的值.

我相信类似的东西myMethod({42, 2009})可以在Ruby中运行,但这看起来很丑陋 - 我希望能够myMethod(42, 2009)让它不那么混乱,特别是对于其他语言.有没有更好的解决方法呢?

谢谢.

java scripting variadic-functions

8
推荐指数
1
解决办法
1396
查看次数

有没有办法在.jar中包含VM参数?

我有一个用Java实现的游戏,当从脚本运行太多代码时遇到问题:根据脚本语言,游戏可能会有这些"打嗝",游戏会不时地冻结几帧,使得游戏"生涩"有时.

经过一些研究,我发现当垃圾收集器决定运行时就会发生这种情况.经过一些研究和测试后,我发现使用增量垃圾收集器(通过使用-Xincgc VM参数)修复了问题.是的,我知道它使GC的运行速度慢了10%,但这是我付出的代价.

有了这些背景信息,现在我要做的就是将游戏打包成.jar就像我到目前为止所做的那样,但我知道没有办法让应用程序使用增量GC而不使用-Xincgc,而我没有想要在用户只需双击.jar之前创建.bat/.sh文件.

有没有办法让.jar运行增量GC而不需要某种加载器(.bat/.sh)或它周围的包装器?有没有办法在.jar中包含该参数?

java parameters garbage-collection jar

3
推荐指数
1
解决办法
2428
查看次数

如何发现哪个类路径条目提供了类?

我从Java中的自定义类加载器中加载了来自几个不同.jars的几个不同的类.我创建一个自定义URLClassLoader,向它添加几个.jars并将其传递给a ServiceLoader以找到我想要的类.

我的问题是:给定一个类,有没有办法发现它是从哪个.jar加载的?

java reflection jar classloader

2
推荐指数
1
解决办法
300
查看次数