Can't install Java 11 into Streamlit

My app uses a Java 11-based tool to run in the background. My ‘packages.txt’ used to have openjdk-11-jdk and the app deploys perfectly with Java 11 just about a week ago. Upon checking today, my app doesn’t work anymore because apparently the streamlit terminal now outputs:
E: Unable to locate package openjdk-11-jdk

I have tried searching for solutions. default-jdk and default-jre essentially installs Java 17 which is not of use to me.

The operating system in Streamlit Cloud is Debian Stable, that dropped Java 11 in June 2023.

Thanks for the explanation. How can I get a workaround for this?

Sorry if I sound dumb: Can I request the admins to add Java 11 as part of the server by doing add-apt-repository ppa:linuxuprising/java as a default to the server’s operating system?

Sorry I have no idea.

Probably your best bet is finding a scriptable method of installation then doesn’t require root access. Or maybe updating your java tool would be less work than that.

Thank you so much for your idea. I solved this problem by

  • changing my packages.txt to have wget
  • manually downloading JAVA 11 using wget and extracting it through os.system()
  • setting JAVA_HOME and java in PATH environment through os.environ
  • caching the function using st.cache_data or st.cache_resource so that the whole procedure run only once

Now, I essentially have JAVA 11. Hope this helps anyone who wants to install a dependency not within apt install.

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.