How does one invoke Clojure on Android?












0














TL;DR: I can't invoke Clojure methods in Android; I get an error and I'm not sure why.



I am building an Android app for a school project. I've learned Clojure, and I would like to use it for parts of my application. (I am not aiming to write the entire thing in Clojure—just a few libraries.)



I've been able to compile a Clojure program into a .jar and invoke it from Java running on my laptop, but I haven't been able to call even built-in functions in an Android app! I’m guessing I’m missing a library or something, but I’m pretty at sea here.



I made the following to test it out:



MainActivity.java:



package org.wiersdorf.ashton.clojureinterop;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import clojure.java.api.Clojure;
import clojure.lang.IFn;

public class MainActivity extends AppCompatActivity {

private Button BoomButton;
private TextView myText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

BoomButton = (Button) findViewById(R.id.my_button);
myText = (TextView) findViewById(R.id.my_text);

BoomButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IFn plus = Clojure.var("clojure.core", "+");
String foo = plus.invoke(1, 2).toString();
myText.setText("Text: " + foo);
}
});

}
}


activity_main.xml:



<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/my_text" />

</android.support.constraint.ConstraintLayout>


When I click the button that shows up, this is the error I get:



2018-11-17 23:05:01.313 16202-16202/org.wiersdorf.ashton.clojureinterop E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.wiersdorf.ashton.clojureinterop, PID: 16202
java.lang.ExceptionInInitializerError
at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:97)
at clojure.core$fn__8373.invokeStatic(core.clj:7032)
at clojure.core$fn__8373.invoke(core.clj:7027)
at clojure.core__init.load(Unknown Source:7027)
at clojure.core__init.<clinit>(Unknown Source:94)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at clojure.lang.RT.classForName(RT.java:2205)
at clojure.lang.RT.classForName(RT.java:2214)
at clojure.lang.RT.loadClassForName(RT.java:2233)
at clojure.lang.RT.load(RT.java:451)
at clojure.lang.RT.load(RT.java:426)
at clojure.lang.RT.doInit(RT.java:469)
at clojure.lang.RT.<clinit>(RT.java:336)
at clojure.lang.Namespace.<init>(Namespace.java:34)
at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
at clojure.lang.Var.intern(Var.java:151)
at clojure.java.api.Clojure.var(Clojure.java:82)
at clojure.java.api.Clojure.<clinit>(Clojure.java:96)
at clojure.java.api.Clojure.var(Clojure.java:82)
at org.wiersdorf.ashton.clojureinterop.MainActivity$1.onClick(MainActivity.java:28)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NoSuchMethodException: canAccess [class java.lang.Object]
at java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:906)
at clojure.lang.Reflector.<clinit>(Reflector.java:38)


Any ideas? Thanks in advance. :)










share|improve this question





























    0














    TL;DR: I can't invoke Clojure methods in Android; I get an error and I'm not sure why.



    I am building an Android app for a school project. I've learned Clojure, and I would like to use it for parts of my application. (I am not aiming to write the entire thing in Clojure—just a few libraries.)



    I've been able to compile a Clojure program into a .jar and invoke it from Java running on my laptop, but I haven't been able to call even built-in functions in an Android app! I’m guessing I’m missing a library or something, but I’m pretty at sea here.



    I made the following to test it out:



    MainActivity.java:



    package org.wiersdorf.ashton.clojureinterop;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    import clojure.java.api.Clojure;
    import clojure.lang.IFn;

    public class MainActivity extends AppCompatActivity {

    private Button BoomButton;
    private TextView myText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BoomButton = (Button) findViewById(R.id.my_button);
    myText = (TextView) findViewById(R.id.my_text);

    BoomButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    IFn plus = Clojure.var("clojure.core", "+");
    String foo = plus.invoke(1, 2).toString();
    myText.setText("Text: " + foo);
    }
    });

    }
    }


    activity_main.xml:



    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
    android:id="@+id/my_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

    <Button
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/my_text" />

    </android.support.constraint.ConstraintLayout>


    When I click the button that shows up, this is the error I get:



    2018-11-17 23:05:01.313 16202-16202/org.wiersdorf.ashton.clojureinterop E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.wiersdorf.ashton.clojureinterop, PID: 16202
    java.lang.ExceptionInInitializerError
    at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:97)
    at clojure.core$fn__8373.invokeStatic(core.clj:7032)
    at clojure.core$fn__8373.invoke(core.clj:7027)
    at clojure.core__init.load(Unknown Source:7027)
    at clojure.core__init.<clinit>(Unknown Source:94)
    at java.lang.Class.classForName(Native Method)
    at java.lang.Class.forName(Class.java:453)
    at clojure.lang.RT.classForName(RT.java:2205)
    at clojure.lang.RT.classForName(RT.java:2214)
    at clojure.lang.RT.loadClassForName(RT.java:2233)
    at clojure.lang.RT.load(RT.java:451)
    at clojure.lang.RT.load(RT.java:426)
    at clojure.lang.RT.doInit(RT.java:469)
    at clojure.lang.RT.<clinit>(RT.java:336)
    at clojure.lang.Namespace.<init>(Namespace.java:34)
    at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
    at clojure.lang.Var.intern(Var.java:151)
    at clojure.java.api.Clojure.var(Clojure.java:82)
    at clojure.java.api.Clojure.<clinit>(Clojure.java:96)
    at clojure.java.api.Clojure.var(Clojure.java:82)
    at org.wiersdorf.ashton.clojureinterop.MainActivity$1.onClick(MainActivity.java:28)
    at android.view.View.performClick(View.java:6294)
    at android.view.View$PerformClick.run(View.java:24770)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
    Caused by: java.lang.NoSuchMethodException: canAccess [class java.lang.Object]
    at java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:906)
    at clojure.lang.Reflector.<clinit>(Reflector.java:38)


    Any ideas? Thanks in advance. :)










    share|improve this question



























      0












      0








      0







      TL;DR: I can't invoke Clojure methods in Android; I get an error and I'm not sure why.



      I am building an Android app for a school project. I've learned Clojure, and I would like to use it for parts of my application. (I am not aiming to write the entire thing in Clojure—just a few libraries.)



      I've been able to compile a Clojure program into a .jar and invoke it from Java running on my laptop, but I haven't been able to call even built-in functions in an Android app! I’m guessing I’m missing a library or something, but I’m pretty at sea here.



      I made the following to test it out:



      MainActivity.java:



      package org.wiersdorf.ashton.clojureinterop;

      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.TextView;

      import clojure.java.api.Clojure;
      import clojure.lang.IFn;

      public class MainActivity extends AppCompatActivity {

      private Button BoomButton;
      private TextView myText;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      BoomButton = (Button) findViewById(R.id.my_button);
      myText = (TextView) findViewById(R.id.my_text);

      BoomButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      IFn plus = Clojure.var("clojure.core", "+");
      String foo = plus.invoke(1, 2).toString();
      myText.setText("Text: " + foo);
      }
      });

      }
      }


      activity_main.xml:



      <?xml version="1.0" encoding="utf-8"?>
      <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity">

      <TextView
      android:id="@+id/my_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello World!"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toTopOf="parent" />

      <Button
      android:id="@+id/my_button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginStart="8dp"
      android:layout_marginTop="8dp"
      android:layout_marginEnd="8dp"
      android:layout_marginBottom="8dp"
      android:text="Button"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent"
      app:layout_constraintTop_toBottomOf="@+id/my_text" />

      </android.support.constraint.ConstraintLayout>


      When I click the button that shows up, this is the error I get:



      2018-11-17 23:05:01.313 16202-16202/org.wiersdorf.ashton.clojureinterop E/AndroidRuntime: FATAL EXCEPTION: main
      Process: org.wiersdorf.ashton.clojureinterop, PID: 16202
      java.lang.ExceptionInInitializerError
      at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:97)
      at clojure.core$fn__8373.invokeStatic(core.clj:7032)
      at clojure.core$fn__8373.invoke(core.clj:7027)
      at clojure.core__init.load(Unknown Source:7027)
      at clojure.core__init.<clinit>(Unknown Source:94)
      at java.lang.Class.classForName(Native Method)
      at java.lang.Class.forName(Class.java:453)
      at clojure.lang.RT.classForName(RT.java:2205)
      at clojure.lang.RT.classForName(RT.java:2214)
      at clojure.lang.RT.loadClassForName(RT.java:2233)
      at clojure.lang.RT.load(RT.java:451)
      at clojure.lang.RT.load(RT.java:426)
      at clojure.lang.RT.doInit(RT.java:469)
      at clojure.lang.RT.<clinit>(RT.java:336)
      at clojure.lang.Namespace.<init>(Namespace.java:34)
      at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
      at clojure.lang.Var.intern(Var.java:151)
      at clojure.java.api.Clojure.var(Clojure.java:82)
      at clojure.java.api.Clojure.<clinit>(Clojure.java:96)
      at clojure.java.api.Clojure.var(Clojure.java:82)
      at org.wiersdorf.ashton.clojureinterop.MainActivity$1.onClick(MainActivity.java:28)
      at android.view.View.performClick(View.java:6294)
      at android.view.View$PerformClick.run(View.java:24770)
      at android.os.Handler.handleCallback(Handler.java:790)
      at android.os.Handler.dispatchMessage(Handler.java:99)
      at android.os.Looper.loop(Looper.java:164)
      at android.app.ActivityThread.main(ActivityThread.java:6494)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
      Caused by: java.lang.NoSuchMethodException: canAccess [class java.lang.Object]
      at java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:906)
      at clojure.lang.Reflector.<clinit>(Reflector.java:38)


      Any ideas? Thanks in advance. :)










      share|improve this question















      TL;DR: I can't invoke Clojure methods in Android; I get an error and I'm not sure why.



      I am building an Android app for a school project. I've learned Clojure, and I would like to use it for parts of my application. (I am not aiming to write the entire thing in Clojure—just a few libraries.)



      I've been able to compile a Clojure program into a .jar and invoke it from Java running on my laptop, but I haven't been able to call even built-in functions in an Android app! I’m guessing I’m missing a library or something, but I’m pretty at sea here.



      I made the following to test it out:



      MainActivity.java:



      package org.wiersdorf.ashton.clojureinterop;

      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.TextView;

      import clojure.java.api.Clojure;
      import clojure.lang.IFn;

      public class MainActivity extends AppCompatActivity {

      private Button BoomButton;
      private TextView myText;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      BoomButton = (Button) findViewById(R.id.my_button);
      myText = (TextView) findViewById(R.id.my_text);

      BoomButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      IFn plus = Clojure.var("clojure.core", "+");
      String foo = plus.invoke(1, 2).toString();
      myText.setText("Text: " + foo);
      }
      });

      }
      }


      activity_main.xml:



      <?xml version="1.0" encoding="utf-8"?>
      <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity">

      <TextView
      android:id="@+id/my_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello World!"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toTopOf="parent" />

      <Button
      android:id="@+id/my_button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginStart="8dp"
      android:layout_marginTop="8dp"
      android:layout_marginEnd="8dp"
      android:layout_marginBottom="8dp"
      android:text="Button"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent"
      app:layout_constraintTop_toBottomOf="@+id/my_text" />

      </android.support.constraint.ConstraintLayout>


      When I click the button that shows up, this is the error I get:



      2018-11-17 23:05:01.313 16202-16202/org.wiersdorf.ashton.clojureinterop E/AndroidRuntime: FATAL EXCEPTION: main
      Process: org.wiersdorf.ashton.clojureinterop, PID: 16202
      java.lang.ExceptionInInitializerError
      at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:97)
      at clojure.core$fn__8373.invokeStatic(core.clj:7032)
      at clojure.core$fn__8373.invoke(core.clj:7027)
      at clojure.core__init.load(Unknown Source:7027)
      at clojure.core__init.<clinit>(Unknown Source:94)
      at java.lang.Class.classForName(Native Method)
      at java.lang.Class.forName(Class.java:453)
      at clojure.lang.RT.classForName(RT.java:2205)
      at clojure.lang.RT.classForName(RT.java:2214)
      at clojure.lang.RT.loadClassForName(RT.java:2233)
      at clojure.lang.RT.load(RT.java:451)
      at clojure.lang.RT.load(RT.java:426)
      at clojure.lang.RT.doInit(RT.java:469)
      at clojure.lang.RT.<clinit>(RT.java:336)
      at clojure.lang.Namespace.<init>(Namespace.java:34)
      at clojure.lang.Namespace.findOrCreate(Namespace.java:176)
      at clojure.lang.Var.intern(Var.java:151)
      at clojure.java.api.Clojure.var(Clojure.java:82)
      at clojure.java.api.Clojure.<clinit>(Clojure.java:96)
      at clojure.java.api.Clojure.var(Clojure.java:82)
      at org.wiersdorf.ashton.clojureinterop.MainActivity$1.onClick(MainActivity.java:28)
      at android.view.View.performClick(View.java:6294)
      at android.view.View$PerformClick.run(View.java:24770)
      at android.os.Handler.handleCallback(Handler.java:790)
      at android.os.Handler.dispatchMessage(Handler.java:99)
      at android.os.Looper.loop(Looper.java:164)
      at android.app.ActivityThread.main(ActivityThread.java:6494)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
      Caused by: java.lang.NoSuchMethodException: canAccess [class java.lang.Object]
      at java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:906)
      at clojure.lang.Reflector.<clinit>(Reflector.java:38)


      Any ideas? Thanks in advance. :)







      android clojure clojure-java-interop






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 19 '18 at 14:43







      Ashton Wiersdorf

















      asked Nov 18 '18 at 6:24









      Ashton WiersdorfAshton Wiersdorf

      567417




      567417
























          1 Answer
          1






          active

          oldest

          votes


















          0














          The method canAccess was added in Java 9 (see here).



          Judging by that stacktrace, which shows a NoSuchMethodException for canAccess, you're using a Clojure jar that was compiled with Java 9 or above, and your Android system is using an earlier JRE.



          If you can either upgrade your JRE on Android, or switch to a compatible version of Clojure, that should fix it.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53358433%2fhow-does-one-invoke-clojure-on-android%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            The method canAccess was added in Java 9 (see here).



            Judging by that stacktrace, which shows a NoSuchMethodException for canAccess, you're using a Clojure jar that was compiled with Java 9 or above, and your Android system is using an earlier JRE.



            If you can either upgrade your JRE on Android, or switch to a compatible version of Clojure, that should fix it.






            share|improve this answer


























              0














              The method canAccess was added in Java 9 (see here).



              Judging by that stacktrace, which shows a NoSuchMethodException for canAccess, you're using a Clojure jar that was compiled with Java 9 or above, and your Android system is using an earlier JRE.



              If you can either upgrade your JRE on Android, or switch to a compatible version of Clojure, that should fix it.






              share|improve this answer
























                0












                0








                0






                The method canAccess was added in Java 9 (see here).



                Judging by that stacktrace, which shows a NoSuchMethodException for canAccess, you're using a Clojure jar that was compiled with Java 9 or above, and your Android system is using an earlier JRE.



                If you can either upgrade your JRE on Android, or switch to a compatible version of Clojure, that should fix it.






                share|improve this answer












                The method canAccess was added in Java 9 (see here).



                Judging by that stacktrace, which shows a NoSuchMethodException for canAccess, you're using a Clojure jar that was compiled with Java 9 or above, and your Android system is using an earlier JRE.



                If you can either upgrade your JRE on Android, or switch to a compatible version of Clojure, that should fix it.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 19 '18 at 19:21









                OpenSauceOpenSauce

                7,13311628




                7,13311628






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53358433%2fhow-does-one-invoke-clojure-on-android%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    MongoDB - Not Authorized To Execute Command

                    Npm cannot find a required file even through it is in the searched directory

                    in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith