hello again,
i have another problem. I'm trying simple applet:
$ cat src/foo/applet.clj
(ns foo.applet
(:import (java.awt Graphics2D Graphics Frame Color Image Toolkit))
(:gen-class
:extends java.applet.Applet))
(defn -paint [#^Applet applet #^Graphics2D g]
(.drawString g "Hello from Clojure!" 50 50))
$ cat project.clj
(defproject foo "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:aot [foo.applet]
:warn-on-reflections true
:uberjar-name "foo-full.jar"
:dependencies [[org.clojure/clojure "1.2.1"]])
$ cat index.html
<html>
<body>
<applet
archive="foo-full.jar"
code="foo.applet.class"
width="400"
height="400">
</applet>
</body>
</html>
$ lein uberjar
$ appletviewer index.html
it works nice
$ firefox index.html
OpenJDK Runtime Environment (IcedTea6 1.8.7) (6b18-1.8.7-2)
OpenJDK Server VM (build 16.0-b13, mixed mode)
Exception in thread "Applet" java.lang.ExceptionInInitializerError
at clojure.lang.Namespace.<init>(Namespace.java:34)
at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
at clojure.lang.Var.internPrivate(Var.java:94)
at foo.applet.<clinit>(Unknown Source)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
57)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:
532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:
588)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:548)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:
729)
Caused by: java.lang.RuntimeException:
java.security.AccessControlException: access denied
(java.lang.RuntimePermission getClassLoader)
at clojure.lang.RT.<clinit>(RT.java:305)
... 13 more
Caused by: java.security.AccessControlException: access denied
(java.lang.RuntimePermission getClassLoader)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:
393)
at
java.security.AccessController.checkPermission(AccessController.java:
553)
at
java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at
net.sourceforge.jnlp.runtime.JNLPSecurityManager.checkPermission(JNLPSecurityManager.java:
250)
at java.lang.Thread.getContextClassLoader(Thread.java:1338)
at clojure.lang.RT.baseLoader(RT.java:1560)
at clojure.lang.RT.load(RT.java:387)
at clojure.lang.RT.load(RT.java:381)
at clojure.lang.RT.doInit(RT.java:416)
at clojure.lang.RT.<clinit>(RT.java:302)
... 13 more
java.lang.NullPointerException
at net.sourceforge.jnlp.NetxPanel.runLoader(NetxPanel.java:99)
at sun.applet.AppletPanel.run(AppletPanel.java:380)
at java.lang.Thread.run(Thread.java:636)
java.lang.NullPointerException
at sun.applet.AppletPanel.run(AppletPanel.java:430)
at java.lang.Thread.run(Thread.java:636)
signing is needed? I found this example
http://chouser.n01se.net/misc/tree.html
which doesn't seems to be signed but it works. I'm confused