Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Rhino';Javascript上的evaluateString()_Javascript_Android_Jvm_Rhino_Dalvik - Fatal编程技术网

使用Rhino';Javascript上的evaluateString()

使用Rhino';Javascript上的evaluateString(),javascript,android,jvm,rhino,dalvik,Javascript,Android,Jvm,Rhino,Dalvik,我正在尝试使用Rhino for Android,以便与这个私人网站上的聊天服务进行交互。我实际上不需要用这个应用程序查看聊天屏幕,所以我认为Rhino可能是一个好方法,因为它隐藏了所有的窗口/浏览器内容 1) 这是正确的方法吗?我尝试这样做的唯一原因是因为我听说WebView不是安全的/最好的解决方案?(如果我的情况根本不是这样,请纠正我!) 2) 因此,我刚刚下载了javascript,并尝试创建一个上下文并在其上进行evaluateString。我有正确的范围和所有这些。此外,我还确保将优

我正在尝试使用Rhino for Android,以便与这个私人网站上的聊天服务进行交互。我实际上不需要用这个应用程序查看聊天屏幕,所以我认为Rhino可能是一个好方法,因为它隐藏了所有的窗口/浏览器内容

1) 这是正确的方法吗?我尝试这样做的唯一原因是因为我听说WebView不是安全的/最好的解决方案?(如果我的情况根本不是这样,请纠正我!)

2) 因此,我刚刚下载了javascript,并尝试创建一个上下文并在其上进行evaluateString。我有正确的范围和所有这些。此外,我还确保将优化级别设置为-1,因为Dalvik代码不会运行从Rhino生成的JVM字节码。但是,我得到的错误是:

D/dalvikvm(  465): GC_FOR_MALLOC freed 1840 objects / 326872 bytes in 57ms
I/dalvikvm(  465): threadid=1: stack overflow on call to Lorg/mozilla/javascript/TokenStream;.getChar:I
I/dalvikvm(  465):   method requires 36+20+8=64 bytes, fp is 0x4186933c (60 left)
I/dalvikvm(  465):   expanding stack end (0x41869300 to 0x41869000)
I/dalvikvm(  465): Shrank stack (to 0x41869300, curFrame is 0x41869754)
D/dalvikvm(  465): GC_FOR_MALLOC freed 5607 objects / 262320 bytes in 47ms
W/dalvikvm(  465): Exception Lorg/mozilla/javascript/EvaluatorException; thrown during Lcom/test/testing/rhinochat/TestChat;.<clinit>
I/dalvikvm(  465): Rejecting re-init on previously-failed class Lcom/test/testing/rhinochat/TestChat; v=0x0
D/AndroidRuntime(  465): Shutting down VM
W/dalvikvm(  465): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime(  465): FATAL EXCEPTION: main
E/AndroidRuntime(  465): java.lang.NoClassDefFoundError: com.test.testing.rhinochat.TestChat
E/AndroidRuntime(  465):        at com.test.testing.rhinochat.TestChatRunner.run(TestChatRunner.java:46)
E/AndroidRuntime(  465):        at com.test.testing.rhinochat.StartChat.onCreate(StartChat.java:10)
E/AndroidRuntime(  465):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  465):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  465):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  465):        at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  465):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  465):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  465):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  465):        at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  465):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  465):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  465):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  465):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  465):        at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(   59):   Force finishing activity com.test.testing/.rhinochat.StartChat
W/ActivityManager(   59):   Force finishing activity com.test.testing/.RhinoOnAndroidActivity
W/ActivityManager(   59): Activity pause timeout for HistoryRecord{450a1240 com.test.testing/.rhinochat.StartChat}
D/dalvikvm(465):GC_FOR_MALLOC在57ms内释放了1840个对象/326872字节
I/dalvikvm(465):threadid=1:Lorg/mozilla/javascript/TokenStream;调用时堆栈溢出;。盖查尔:我
I/dalvikvm(465):方法需要36+20+8=64字节,fp为0x4186933c(左60)
I/DALVIVVM(465):扩展堆栈端(0x41869300到0x41869000)
I/dalvikvm(465):收缩堆栈(到0x41869300,curFrame为0x41869754)
D/dalvikvm(465):GC_FOR_MALLOC在47ms内释放了5607个对象/262320字节
W/dalvikvm(465):异常Lorg/mozilla/javascript/EvaluatorException;在Lcom/test/testing/rhinochat/TestChat;期间引发;。
I/dalvikvm(465):拒绝在以前失败的类Lcom/test/testing/rhinochat/TestChat上重新初始化;v=0x0
D/AndroidRuntime(465):关闭虚拟机
W/dalvikvm(465):线程ID=1:线程退出时出现未捕获异常(组=0x4001d800)
E/AndroidRuntime(465):致命异常:主
E/AndroidRuntime(465):java.lang.NoClassDefFoundError:com.test.testing.rhinochat.TestChat
E/AndroidRuntime(465):位于com.test.testing.rhinochat.TestChatRunner.run(TestChatRunner.java:46)
E/AndroidRuntime(465):位于com.test.testing.rhinochat.StartChat.onCreate(StartChat.java:10)
E/AndroidRuntime(465):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(465):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(465):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(465):位于android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(465):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(465):位于android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(465):位于android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(465):位于android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(465):位于java.lang.reflect.Method.Invokenactive(本机方法)
E/AndroidRuntime(465):位于java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(465):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(465):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(465):位于dalvik.system.NativeStart.main(本机方法)
W/ActivityManager(59):强制完成活动com.test.testing/.rhinochat.StartChat
W/ActivityManager(59):强制完成活动com.test.testing/.rhinonandroidActivity
W/ActivityManager(59):历史记录{450a1240 com.test.testing/.rhinochat.StartChat}的活动暂停超时
我已经从Eclipse设置了允许的最大堆栈空间(我认为最大长度或类似的东西很可笑),但仍然得到了这个错误。使用各种设备进行测试,结果相同

这里有一个陷阱:我在桌面上运行我的代码,所有的东西都能完美地编译和运行,即使没有对编译器进行优化。但当我在Android上运行相同的代码时,它崩溃了。(我试过emulator和多个硬件设备)

所以在这一点上,我非常困惑。有人知道为什么会这样吗?在编译/运行此javascript时,有没有办法让Dalvik表现得像JVM一样?这是javascript的错吗?如果是这样的话,为什么我的桌面上没有相同的javascript错误

更糟糕的是,我甚至不知道如何获得javascript错误抛出的任何提示,或者堆栈跟踪或其他任何信息

任何帮助或暗示都将不胜感激


节日快乐,谢谢你阅读这个问题。

好的,问题是我问的问题不对。我不该惊慌失措,把一大堆信息都扔出去

事实证明,如果设置最大堆栈大小,它将完全被忽略。因此,通过将堆栈大小设置为一个相当合理的数量,它将起作用。当然,这需要调整堆栈空间,并准确地确定在哪一点工作。事实证明,使用100kb的堆栈空间对我来说已经足够了,因为我还将它放在了一个单独的线程中

Runnable r = new Runnable(){
    public void run(){
    //... evaluateString() function here ...
    }
}
final Thread t = new Thread(new ThreadGroup("A") , r, "my thread name", 100000);
t.start();