Я пытаюсь использовать Rhino для Android, чтобы взаимодействовать с этой службой чата на частном веб-сайте.На самом деле мне не нужно смотреть на экран чата с приложением, поэтому я подумал, что Rhino - это хороший подход, потому что он скрывает все окна / браузер.
1) это даже правильноподход?единственная причина, по которой я пытаюсь это сделать, заключается в том, что я слышал, что WebViews не были безопасными / лучшим решением?(пожалуйста, исправьте меня в этом, если это совсем не так для моей ситуации!)
2), поэтому я просто скачал javascript и попытался создать Context и оценивать строку String для этого.у меня правильная сфера и все такое.Кроме того, я также позаботился о том, чтобы установить уровень оптимизации -1, потому что код Dalvik не будет запускать байт-код JVM, сгенерированный из Rhino.однако, ошибка, которую я получаю, такова:
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}
Я установил максимально допустимое пространство стека в Eclipse (я думаю, что это максимальная длина или что-то нелепое) и все еще получаю эту ошибку.протестировано с различными устройствами и одинаковыми результатами.
в этом и заключается загвоздка: я запускаю свой код на своем рабочем столе, и все компилируется и работает отлично, даже без оптимизации на компиляторе.но когда я запускаю ТОЧНЫЙ ТОЧНЫЙ код на Android, он вылетает.(я пробовал как эмулятор, так и несколько аппаратных устройств)
, так что на данный момент я очень озадачен.Кто-нибудь знает, почему это происходит?Есть ли способ заставить Dalvik вести себя как JVM при компиляции / запуске этого JavaScript?это вина Javascript?и если да, то почему я не получаю ту же ошибку на рабочем столе с тем же javascript?
Что еще хуже, я даже не знаю, как получить какие-либо подсказки о том, что такое ошибка javascriptметание, или трассировка стека, или что-нибудь еще
ЛЮБАЯ помощь или подсказки будут очень признательны.
Счастливых праздников и спасибо за чтение вопроса.