Closed GoogleCodeExporter closed 9 years ago
I can't reproduce this error. Could you provide a logcat output? Also, please
provide the script your tried to run. Also, try uninstalling BeanShell,
deleting all .zip files from your SD card, and reinstalling it. It's possible
you're getting an old version...
Original comment by damonkoh...@gmail.com
on 7 Aug 2010 at 1:27
Sorry this took so long -- had to work the day job today. :P
OK, since I am running rooted, and since this seems to be a file permissions
problem -- apparently the dalvik-cache stuff -- I first made sure Terminal
didn't have 'su' permissions, I turned off Swapper2, I manually deleted (as
requested) all .zip files from my /sdcard, I uninstalled Beanshell, Rhino, and
SL4A (in that order).
Then I rebooted and re-installed SL4A and Rhino.
Output from file listing run in adb shell:
# find / -name '*rhino*' -exec ls -l {} \;
----rwxr-x 1 system sdcard_r 31884 Aug 7 23:05
/mnt/sdcard/download/rhino_for_android_r0.apk
d---rwxr-x 2 system sdcard_r 8192 Aug 7 23:06 dalvik-cache
d---rwxr-x 3 system sdcard_r 8192 Aug 7 23:06 extras
----rwxr-x 1 system sdcard_r 352699 Aug 7 23:06 rhino_extras_r3.zip
----rwxr-x 1 system sdcard_r 268 Aug 7 23:06 rhino_scripts_r2.zip
----rwxr-x 1 system sdcard_r 352699 Aug 7 23:06
/mnt/sdcard/com.googlecode.rhinoforandroid/rhino_extras_r3.zip
----rwxr-x 1 system sdcard_r 1933 Aug 7 23:06 android.js
----rwxr-x 1 system sdcard_r 17347 Aug 7 23:06 json2.js
----rwxr-x 1 system sdcard_r 347018 Aug 7 23:06 rhino1_7R2-dex.jar
----rwxr-x 1 system sdcard_r 347018 Aug 7 23:06
/mnt/sdcard/com.googlecode.rhinoforandroid/extras/rhino/rhino1_7R2-dex.jar
----rwxr-x 1 system sdcard_r 268 Aug 7 23:06
/mnt/sdcard/com.googlecode.rhinoforandroid/rhino_scripts_r2.zip
-rw-r--r-- 1 system system 31884 Aug 7 23:06
/data/app/com.googlecode.rhinoforandroid-1.apk
drwxr-xr-x 1 system system 2048 Aug 7 23:06 lib
drwxrwx--x 1 app_80 app_80 2048 Aug 7 23:06 shared_prefs
-rw-rw---- 1 app_80 app_80 129 Aug 7 23:06
/data/data/com.googlecode.rhinoforandroid/shared_prefs/com.googlecode.rhinoforan
droid_preferences.xml
-rw-r--r-- 1 system app_80 56344 Aug 7 23:06
/data/dalvik-cache/data@app@com.googlecode.rhinoforandroid-1.apk@classes.dex
The script I tried to run is:
# cat hello_world.js
load("/sdcard/com.googlecode.rhinoforandroid/extras/rhino/android.js");
var droid = new Android();
droid.makeToast("Hello, Android!");
Logcat:
V/sl4a.JsonRpcServer:270( 1289): Bound to 127.0.0.1:53899
I/ActivityManager( 117): Starting activity: Intent { flg=0x10000000
cmp=com.googlecode.android_scripting/.terminal.Terminal (has extras) }
V/sl4a.Process:122( 1289): Executing /system/bin/dalvikvm with arguments
[-Xbootclasspath:/system/framework/core.jar, -Xss128k, -classpath,
/mnt/sdcard/com.googlecode.rhinoforandroid/extras/rhino/rhino1_7R2-dex.jar,
org.mozilla.javascript.tools.shell.Main, -O, -1,
/mnt/sdcard/sl4a/scripts/hello_world.js] and with environment
{ANDROID_SOCKET_zygote=11, AP_HANDSHAKE=955ccf1d-44eb-4174-9e0c-2684ac0eaead,
ANDROID_BOOTLOGO=1, EXTERNAL_STORAGE=/mnt/sdcard, ANDROID_CACHE=/cache,
ANDROID_ASSETS=/system/app, PATH=/sbin:/system/sbin:/system/bin:/system/xbin,
ASEC_MOUNTPOINT=/mnt/asec, AP_HOST=localhost,
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/frame
work/framework.jar:/system/framework/android.policy.jar:/system/framework/servic
es.jar, AP_PORT=53899, TERMINFO=/system/etc/terminfo,
ANDROID_DATA=/mnt/sdcard/com.googlecode.rhinoforandroid,
LD_LIBRARY_PATH=/system/lib, ANDROID_ROOT=/system,
ANDROID_PROPERTY_WORKSPACE=10,32768}
I/ActivityManager( 117): Start proc com.google.android.voicesearch for
broadcast com.google.android.voicesearch/.logging.LoggingReceiver: pid=1435
uid=10004 gids={3003}
D/dalvikvm( 1289): GC_FOR_MALLOC freed 7103 objects / 561976 bytes in 486ms
I/ActivityThread( 1435): Publishing provider
com.google.android.voicesearch.VoiceSearchResultProvider:
com.google.android.voicesearch.VoiceSearchResultProvider
I/dalvikvm-heap( 1289): Grow heap (frag case) to 4.474MB for 1600016-byte
allocation
D/dalvikvm( 1289): GC_FOR_MALLOC freed 740 objects / 38256 bytes in 289ms
I/ActivityManager( 117): Displayed activity
com.googlecode.android_scripting/.terminal.Terminal: 1592 ms (total 1592 ms)
E/dalvikvm( 1432): Can't open dex cache
'/data/dalvik-cache/mnt@sdcard@com.googlecode.rhinoforandroid@extras@rhino@rhino
1_7R2-dex.jar@classes.dex': No such file or directory
I/dalvikvm( 1432): Unable to open or create cache for
/mnt/sdcard/com.googlecode.rhinoforandroid/extras/rhino/rhino1_7R2-dex.jar
(/data/dalvik-cache/mnt@sdcard@com.googlecode.rhinoforandroid@extras@rhino@rhino
1_7R2-dex.jar@classes.dex)
W/dalvikvm( 1432): threadid=1: thread exiting with uncaught exception
(group=0x400205c8)
V/sl4a.Process$1:136( 1289): Process 1432 exited with result code 1.
D/dalvikvm( 1289): GC_FOR_MALLOC freed 2518 objects / 573704 bytes in 105ms
E/sl4a.EmulatorView$2:415( 1289): Failed to read. Exiting thread.
E/sl4a.EmulatorView$2:415( 1289): java.io.IOException: I/O error
E/sl4a.EmulatorView$2:415( 1289): at
org.apache.harmony.luni.platform.OSFileSystem.readImpl(Native Method)
E/sl4a.EmulatorView$2:415( 1289): at
org.apache.harmony.luni.platform.OSFileSystem.read(OSFileSystem.java:118)
E/sl4a.EmulatorView$2:415( 1289): at
java.io.FileInputStream.read(FileInputStream.java:312)
E/sl4a.EmulatorView$2:415( 1289): at
java.io.FileInputStream.read(FileInputStream.java:267)
E/sl4a.EmulatorView$2:415( 1289): at
com.trilead.ssh2.StreamGobbler$GobblerThread.run(StreamGobbler.java:40)
I'm a little curious why there is a (very) recent file called
'/data/dalvik-cache/data@app@com.googlecode.rhinoforandroid-1.apk@classes.dex',
but the logcat shows
'/data/dalvik-cache/mnt@sdcard@com.googlecode.rhinoforandroid@extras@rhino@rhino
1_7R2-dex.jar@classes.dex'.
I dunno. I just installed an app called 'aLogcat', and its running just fine.
All my apps installed after rooting seem to be fine, and their .dex files seem
to be in /data/dalvik-cache (as they are supposed to be, I think?).
HTH!
Original comment by natural....@gmail.com
on 8 Aug 2010 at 9:50
Ah, lemme guess:
'/data/dalvik-cache/data@app@com.googlecode.rhinoforandroid-1.apk@classes.dex'
are the installer classes, etc., whereas the (apparentl non-existent)
'/data/dalvik-cache/mnt@sdcard@com.googlecode.rhinoforandroid@extras@rhino@rhino
1_7R2-dex.jar@classes.dex' are supposed to be the actual rhino runtime.
Original comment by natural....@gmail.com
on 8 Aug 2010 at 9:56
Looks like it's Cyanogen specific issue. Apparently, setting ANDROID_DATA to
'/mnt/sdcard/com.googlecode.rhinoforandroid' does not really work there. We'll
try to find a way around.
Original comment by Alexey.R...@gmail.com
on 10 Aug 2010 at 11:22
I was wondering about that. ('ANDROID_DATA')
To me, it looks like an environment variable? I'm too new to Android to be
sure, and if it is, if/how one could set it from within SL4A, or I would have
already tried.
Thanks for looking at this.
Original comment by natural....@gmail.com
on 11 Aug 2010 at 4:44
Interestingly (to me anyway), after a fresh reboot when I connect via 'adb
shell', the environment is a bit different:
# set
ANDROID_ASSETS=/system/app
ANDROID_BOOTLOGO=1
ANDROID_CACHE=/cache
ANDROID_DATA=/data
ANDROID_PROPERTY_WORKSPACE=10,32768
ANDROID_ROOT=/system
ASEC_MOUNTPOINT=/mnt/asec
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/frame
work/framework.jar:/system/framework/android.policy.jar:/system/framework/servic
es.jar
EXTERNAL_STORAGE=/mnt/sdcard
IFS='
'
LD_LIBRARY_PATH=/system/lib
OPTIND=1
PATH=/sbin:/system/sbin:/system/bin:/system/xbin
PS1='# '
PS2='> '
PS4='+ '
TERMINFO=/system/etc/terminfo
#
So I wonder why ANDROID_DATA is changed?
Original comment by natural....@gmail.com
on 14 Aug 2010 at 12:03
Any movement on this issue? I am dying to try this, but have same problem
(Cyanogen 6 RC3 for Moto Droid).
Thanks!
Original comment by jason.bunting
on 25 Aug 2010 at 11:17
Please try with the just release SL4A r1. However, I suspect this is an issue
with Cyanogen.
Original comment by damonkoh...@gmail.com
on 25 Aug 2010 at 11:26
[deleted comment]
[deleted comment]
when starting a jruby script i get
Dalvik VM unable to locate class 'org/jruby/Main'
java.lang.NoCassDefFoundError: org.jruby.Main
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: org.jruby.Main in loader
dalvik.system.PathClassLoader[/mnt/cdcard/com.googlecode.jrubyforandroid/extras/
jruby/jruby-complete-1.4.jar]
at dalvik.system.PathlassLoader.findClass(PathClassLoader.jave:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
Original comment by philipp....@gmail.com
on 5 Sep 2010 at 11:16
Just wanted to tell, i installed Pays ROM on the desire, got it from here:
http://forum.xda-developers.com/showthread.php?t=729172
Everything works now as it should!
Original comment by philipp....@gmail.com
on 7 Sep 2010 at 12:19
Original comment by damonkoh...@gmail.com
on 9 Sep 2010 at 11:45
Original comment by damonkoh...@gmail.com
on 6 Nov 2010 at 9:22
@ Cyanogen Mod 6
File permissions are too strict. Got mine working.
/cache
/cache/dalvik-cache
/data
/data/dalvik-cache
These dir permissions don't have 'other/world' r/w which causes failure to load
class data's.
Original comment by pc.wiz...@gmail.com
on 7 Mar 2011 at 7:56
This is actually android issue 966
http://code.google.com/p/android/issues/detail?id=966
I'm trying to figure out how to install jar files using an apk. It may be
pointless. It seems like google doesn't want us to have our own "user library
cache" (eg. /usr/lib/dalvik-cache". Which is unacceptable to me as a developer.
I can understand why for "system files" because it is a security risk, but for
an application library? This does not support code reuse or application
extensibility which is "supposedly" one of the goals of the android platform.
There needs to be a permission system created for applications that would give
each application a user name on the system which would then delegate access to
the libraries in the user cache by proxy. That's just my take on the
sit-chee-ation.
Original comment by pc.wiz...@gmail.com
on 25 Mar 2011 at 6:11
I solved this.
1)open this file:
/mnt/sdcard/com.googlecode.rhinoforandroid/extras/rhino/rhino1_7R2-dex.jar
2)extract the file classes.dex to /data/dalvik-cache/
3)change the file permission of classes.dex to rw-r--r--
4)change the owner of classes.dex to 1000 (system)
5)change the group of classes.dex to 1000 (system) or 2000 (shell)
6)change the name of classes.dex to
mnt@sdcard@com.googlecode.rhinoforandroid@extras@rhino@rhino1_7R2-dex.jar@classe
s.dex
Original comment by foxwi...@gmail.com
on 29 Oct 2011 at 12:01
Original issue reported on code.google.com by
natural....@gmail.com
on 7 Aug 2010 at 11:57