clojure-android / lein-droid

A Leiningen plugin for building Clojure/Android projects
Eclipse Public License 1.0
645 stars 56 forks source link

java.lang.SecurityException #98

Closed gibiansky closed 10 years ago

gibiansky commented 10 years ago

I'm getting the following error message on lein droid doall.

Leiningen's classpath: :/Users/silver/dev/homebrew/Cellar/leiningen/2.3.4/libexec/leiningen-2.3.4-standalone.jar
Applying task droid to (doall)
Warning: profile :android-dev not found.
Generating R.java...
/Users/silver/dev/android/build-tools/20.0.0/aapt package --auto-add-overlay -f -m -M /Users/silver/code/android/AndroidManifest.xml -S /Users/silver/code/android/target/res -S /Users/silver/code/android/res -I /Users/silver/dev/android/platforms/android-20/android.jar -J /Users/silver/code/android/gen --generate-dependencies
Applying task javac to nil
Running javac with [@/var/folders/0l/vg6g5pdd32l6ggh_xdngnkwh0000gn/T/.leiningen-cmdline8018946570170141671.tmp]
Warning: profile :android-dev not found.
Compiling 1 source files to /Users/silver/code/android/target/classes
Applying task compile to nil
All namespaces already AOT compiled.
Running javac with [@/var/folders/0l/vg6g5pdd32l6ggh_xdngnkwh0000gn/T/.leiningen-cmdline426832129450172004.tmp]
Compiling Clojure files...
Project classpath: (/Users/silver/dev/android/tools/support/annotations.jar /Users/silver/dev/android/platforms/android-20/android.jar /Users/silver/code/android/test /Users/silver/code/android/src/clojure /Users/silver/code/android/src /Users/silver/code/android/resources /Users/silver/code/android/target/classes /Users/silver/.m2/repository/neko/neko/3.0.1/neko-3.0.1.jar /Users/silver/.m2/repository/org/clojure/tools.nrepl/0.2.3/tools.nrepl-0.2.3.jar /Users/silver/.m2/repository/org/clojure-android/clojure/1.6.0-RC1/clojure-1.6.0-RC1.jar /Users/silver/.m2/repository/compliment/compliment/0.0.3/compliment-0.0.3.jar)
Build type: debug, dynamic compilation: enabled, remote REPL: enabled.
Applying task javac to nil
Running javac with [@/var/folders/0l/vg6g5pdd32l6ggh_xdngnkwh0000gn/T/.leiningen-cmdline101220411971634038.tmp]
Compiling neko.compliment.ui-widgets-and-attributes
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.lang, compiling:(neko/resource.clj:57:23)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6651)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6632)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.analyze(Compiler.java:6406)
    at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2708)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.access$100(Compiler.java:38)
    at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6050)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6632)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.analyze(Compiler.java:6406)
    at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5782)
    at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5217)
    at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3846)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6642)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6632)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.access$100(Compiler.java:38)
    at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:538)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
    at clojure.lang.Compiler.analyze(Compiler.java:6445)
    at clojure.lang.Compiler.analyze(Compiler.java:6406)
    at clojure.lang.Compiler.compile1(Compiler.java:7221)
    at clojure.lang.Compiler.compile(Compiler.java:7292)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5066.invoke(core.clj:5641)
    at clojure.core$load.doInvoke(core.clj:5640)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5446)
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
    at clojure.core$load_lib.doInvoke(core.clj:5485)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$load_libs.doInvoke(core.clj:5524)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$require.doInvoke(core.clj:5607)
    at clojure.lang.RestFn.invoke(RestFn.java:482)
    at neko.ui.traits$loading__4958__auto__.invoke(traits.clj:12)
    at clojure.lang.AFn.applyToHelper(AFn.java:152)
    at clojure.lang.AFn.applyTo(AFn.java:144)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3553)
    at clojure.lang.Compiler.compile1(Compiler.java:7226)
    at clojure.lang.Compiler.compile1(Compiler.java:7216)
    at clojure.lang.Compiler.compile(Compiler.java:7292)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5066.invoke(core.clj:5641)
    at clojure.core$load.doInvoke(core.clj:5640)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5446)
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
    at clojure.core$load_lib.doInvoke(core.clj:5485)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$load_libs.doInvoke(core.clj:5524)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$require.doInvoke(core.clj:5607)
    at clojure.lang.RestFn.invoke(RestFn.java:512)
    at neko.compliment.ui_widgets_and_attributes$loading__4958__auto__.invoke(ui_widgets_and_attributes.clj:1)
    at clojure.lang.AFn.applyToHelper(AFn.java:152)
    at clojure.lang.AFn.applyTo(AFn.java:144)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3553)
    at clojure.lang.Compiler.compile1(Compiler.java:7226)
    at clojure.lang.Compiler.compile1(Compiler.java:7216)
    at clojure.lang.Compiler.compile(Compiler.java:7292)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5066.invoke(core.clj:5641)
    at clojure.core$load.doInvoke(core.clj:5640)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5446)
    at clojure.core$compile$fn__5071.invoke(core.clj:5652)
    at clojure.core$compile.invoke(core.clj:5651)
    at user$eval7.invoke(form-init3326988319749417037.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6703)
    at clojure.lang.Compiler.eval(Compiler.java:6693)
    at clojure.lang.Compiler.load(Compiler.java:7130)
    at clojure.lang.Compiler.loadFile(Compiler.java:7086)
    at clojure.main$load_script.invoke(main.clj:279)
    at clojure.main$init_opt.invoke(main.clj:284)
    at clojure.main$initialize.invoke(main.clj:312)
    at clojure.main$null_opt.invoke(main.clj:347)
    at clojure.main$main.doInvoke(main.clj:425)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)
Caused by: java.lang.SecurityException: Prohibited package name: java.lang
    at java.lang.ClassLoader.preDefineClass(ClassLoader.java:485)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2484)
    at java.lang.Class.privateGetPublicMethods(Class.java:2604)
    at java.lang.Class.getMethods(Class.java:1446)
    at clojure.lang.Reflector.getMethods(Reflector.java:373)
    at clojure.lang.Compiler$InstanceMethodExpr.<init>(Compiler.java:1409)
    at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:961)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:6644)
    ... 98 more
Compilation failed.

What's going on?

Here is project.clj:

(defproject android/android "0.0.1-SNAPSHOT"
  :description "FIXME: Android project description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :min-lein-version "2.0.0"

  :global-vars {*warn-on-reflection* true}

  :source-paths ["src/clojure" "src"]
  :java-source-paths ["src/java" "gen"]
  ;; :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]

  :dependencies [[org.clojure-android/clojure "1.6.0-RC1" :use-resources true]
                 [neko/neko "3.0.1"]]
  :profiles {:dev {:dependencies [[org.clojure/tools.nrepl "0.2.3"]
                                  [compliment "0.0.3"]]
                   :android {:aot :all-with-unused}}
             :release {:android
                       {;; Specify the path to your private keystore
                        ;; and the the alias of the key you want to
                        ;; sign APKs with. Do it either here or in
                        ;; ~/.lein/profiles.clj
                        ;; :keystore-path "/home/user/.android/private.keystore"
                        ;; :key-alias "mykeyalias"

                        :ignore-log-priority [:debug :verbose]
                        :aot :all}}}

  :android {;; Specify the path to the Android SDK directory either
            ;; here or in your ~/.lein/profiles.clj file.
            :sdk-path "/Users/silver/dev/android"

            ;; Uncomment this if dexer fails with
            ;; OutOfMemoryException. Set the value according to your
            ;; available RAM.
            ;; :dex-opts ["-JXmx4096M"]

            ;; If previous option didn't work, uncomment this as well.
            ;; :force-dex-optimize true

            :target-version "20"
            :aot-exclude-ns ["clojure.parallel" "clojure.core.reducers"]})

And here is ~/.lein/profiles.clj:

{:user {:plugins [ [lein-droid "0.2.3"] ]}}

I am on OSX 10.9.

How can I fix this?

alexander-yakushev commented 10 years ago

Seems like the same problem as #71. Can you please check?

gibiansky commented 10 years ago

I noticed that and tried to work around it as instructed there. Do I need to install new java? Look at my pasted config files, are they okay?

I think Mavericks might ship with only java 1.6, so it's likely I need to install new java. But that wasn't clear from the other bug report...

alexander-yakushev commented 10 years ago

Your configs seem OK. You might need to uncomment the :javac-options ... line when you install JDK7 (JDK8 might also work, I just haven't tested with it yet).

Sorry if it wasn't clear that it is most likely about the JDK version. I thought you will figure it out from:

you can't use JDK6 anymore.

So if you manage to make it work with JDK7, please report.

gibiansky commented 10 years ago

Alright, close this ticket then :) most likely a dupe

alexander-yakushev commented 10 years ago

I won't until it is confirmed as such, it could be really some other problem leading to the same exception. I just haven't seen it aside from the said version mismatch, so my first reaction was to link to that old issue.

alexander-yakushev commented 10 years ago

Closed as probable duplicate of #71.