Quantcast
Channel: MobileRead Forums - Kindle Developer's Corner
Viewing all articles
Browse latest Browse all 4414

cvm investigations

$
0
0
Kindles have a Java Virtual Machine located at /usr/java/bin/cvm, so i'm doing some investigations ;):

I'm able to run a java (non kindlet) textual app with the command:
Code:

/usr/java/bin/cvm -jar FileName.jar
or
Code:

/usr/java/bin/cvm -cp FileName.jar ClassName
but, if i try to run a (non kindlet) swing app i get this error:
Spoiler:
[root@kindle documents]# /usr/java/bin/cvm -jar TestSwing.jar
CVM Capabilities set
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: java/awt/Component
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unkn own Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unkno wn Source)
Caused by: java.lang.ClassNotFoundException: java.awt.Component
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more


if include in the classpath the /usr/java/lib/agui.jar (which contains the java/awt/Component), i get:
Spoiler:
[root@kindle documents]# /usr/java/bin/cvm -cp /usr/java/lib/agui.jar:TestSwing.jar testswing.TestSwing
CVM Capabilities set
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.awt
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknow n Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unkn own Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unkno wn Source)


if i try to launch a kindlet:
Spoiler:
[root@kindle documents]# /usr/java/bin/cvm -cp /opt/amazon/ebook/lib/Kindlet-2.2.jar:Test.azw2 com.encol.test.Main
CVM Capabilities set
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: java/awt/Component
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unkn own Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unkno wn Source)
Caused by: java.lang.ClassNotFoundException: java.awt.Component
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more


(yes, i know that i can also use the command:
Code:

lipc-set-prop com.lab126.appmgrd start file:///mnt/us/documents/Test.azw2
but i'd like a more "direct" way: launching kindlets via lipc hides for example all System.out.println messages)


if i include the java/awt/Component:

Spoiler:
[root@kindle documents]# /usr/java/bin/cvm -cp /opt/amazon/ebook/lib/Kindlet-2.2.jar:/usr/java/lib/agui.jar:Test.azw2 com.encol.test.Main
CVM Capabilities set
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.awt
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknow n Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unkn own Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unkno wn Source)



there is any way to launch a swing app or a kindlet via cvm? :chinscratch:

Viewing all articles
Browse latest Browse all 4414

Trending Articles