Home > Mobile >  How to fix java.lang.StackOverflowError in java
How to fix java.lang.StackOverflowError in java

Time:02-22

I'm writing an application that needs to use the GPIO pins on the raspberry pi, now I couldn't get pi4j to work so I just wrote the code in python and called it with java. Now I'm running this code to call my python script but I keep getting an overflow error and I'm not sure why this is my code

Gpio_On.java

package Controller;

import java.io.IOException;

public class Gpio_On extends Thread {
    public String Pin;

    public void setPin(String pin) {
        Pin = pin;
    }

    public void start() {
        Gpio_On thread = new Gpio_On();
        thread.start();
    }
    public void run(){
        System.out.println("in thread for gpio on PIN:"   Pin);
        try {
            System.out.println("python3 /home/pi/gpioOn.py "   Pin);
            Process p = Runtime.getRuntime().exec("python3 /home/pi/gpioOn.py "   Pin);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Terminal

Exception in thread "main" java.lang.StackOverflowError
    at java.base/java.security.AccessControlContext.optimize(AccessControlContext.java:632)
    at java.base/java.security.AccessController.getContext(AccessController.java:839)
    at java.base/java.lang.Thread.<init>(Thread.java:440)
    at java.base/java.lang.Thread.<init>(Thread.java:704)
    at java.base/java.lang.Thread.<init>(Thread.java:473)
    at Controller.Gpio_On.<init>(Gpio_On.java:5)
    at Controller.Gpio_On.start(Gpio_On.java:13)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
    at Controller.Gpio_On.start(Gpio_On.java:14)
this error keeps going for a long time

CodePudding user response:

You're actually overriding start(): https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#start() Just remove it and it will work.

CodePudding user response:

when making a thread start you would pass thread.start but there's also a function in that class called start so when calling thread.start it's running the function that's already running so it throws an error

  • Related