View Single Post
Old 11-29-2016, 06:12 AM   #1
encol
Evangelist
encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.encol ought to be getting tired of karma fortunes by now.
 
Posts: 416
Karma: 765432
Join Date: Apr 2016
Location: Italy
Device: Kindle PW3 5.8.5.0.1
cvm investigations

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?
encol is offline   Reply With Quote