As400 run a personal JRE - java

i have a java program that must run on an as400, running it from qshel run jre 1.6, but my dependencies require jre 1.8 is it possible to start that program with portable 1.8 jre?
as is also done on Windows and Linux with the .bat and .sh files!
can you tell me the commands to customize the (java home) without moving the 1.6 installed?

Traditionally, the only JVMs available for the IBM i platform come from IBM. These are available through various options of the 5770-JV1 product. Versions up to 1.8 are available for IBM i 7.1 and up (perhaps earlier, but I haven't gone digging) You can find the available JVM options at https://www.ibm.com/support/pages/node/1117869
To use a Java 1.8 64-bit VM from QSH, you could do eg.
JAVA_HOME=/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit
export JAVA_HOME
java -jar ...

Your challenge is a very common task in legacy systems.
This worked for me:
Put your portable jre.zip close to your java program.
Unzip it
Create a JAVA_HOME just for this execution:
export JAVA_HOME=/home/mydownloads/jre
export PATH=${PATH}:$JAVA_HOME/bin
Try with java -version
Execute your java program: java -jar myapp.jar
You could add this steps to yous bash scripts.

Related

What is the proper way of using JDK on WSL2 on Windows 10?

I have installed Ubuntu 20.4 LTS on WSL. My windows 10 already have the JDK installed. Do I need to install JDK on ubuntu on WSL or can I use the Windows 10 JDK in the Ubuntu? How you do Java programming on WSL? Which is the proper way?
I was just wondering if I need to install all the development tools and binaries again on Linux won't it take a lot of space & hog a lot of CPU/Ram resources?
Run the following commands as a user with sudo privileges or root to update the packages index and install the OpenJDK 11 JDK package:
$ sudo apt update
$ sudo apt install openjdk-11-jdk
Once the installation is complete, you can verify it by checking the Java version:
$ java -version
The output should look something like this:
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Set JAVA_HOME Environment Variable:
OpenJDK 11 is located at /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Once you found the path of your preferred Java installation, open the /etc/environment file:
$ sudo nano /etc/environment
Assuming you want to set JAVA_HOME to point to OpenJDK 11, add the following line, at the end of the file:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
For changes to take effect on your current shell you can either log out and log in or run the following source command:
$ source /etc/environment
Verify that the JAVA_HOME environment variable was correctly set:
$ echo $JAVA_HOME
You should see the path to the Java installation:
/usr/lib/jvm/java-11-openjdk-amd64
for reference you can follow this link below
How to Install Java on Ubuntu 20.04
We can use that Windows JDK inside the wsl2. we should add this to /etc/environment
JAVA_HOME=/mnt/c/Program Files/Java/jdk-11.0.8/bin/
by adding this bin folder we may run regular commands but append with .exe format eg: javac.exe hello.java java.exe hello.java
if you don't like that way then add alias like below:
alias java='java.exe'
alias javac='javac.exe'
I think we can use any of the windows programs like this :)
There is not a "proper" (as in supported or recommended by JDK providers) way to install or use Java on WSL. I could not find any official recommendations.
However, it is possible to either install and use Oracle JDK for Windows installation from WSL, or install OpenJDK Java into your WSL world from the Ubuntu package manager.
I was just wondering if I need to install all the development tools and binaries again on Linux won't it take a lot of space & hog a lot of CPU/Ram resources ?
See above. But note that you are only going to "hog CPU/RAM" if you are running both kinds of JVM at the same time.
References:
Installing Oracle JDK on Windows subsystem for Linux
Java JDK 11 install script for Windows Subsystem for Linux (WSL)
Windows Subsystem for Linux Java Setup ... using the Ubuntu package system.
(There are many more articles on this topic if the above don't address your concerns.)
I installed Java via IntelliJ IDEA on Windows 11 and wanted to reuse the installation on WSL.
Create matching functions in ~/.bashrc to start the executables directly and export them so they can be used from subshells:
java() {
/mnt/c/Program\ Files/Eclipse\ Adoptium/jdk-<version>/bin/java.exe "$#"
}
export -f java
javac() {
/mnt/c/Program\ Files/Eclipse\ Adoptium/jdk-<version>/bin/javac.exe "$#"
}
export -f javac

How to get java executable via Conda?

I need java 1.7, in a Conda environment. I installed OpenJDK Java 1.7 like this:
conda install -c anaconda java-1.7.0-openjdk-cos6-x86_64
So far so good. But, I do not have any java executable, and could not find it...
How can I execute JAR files then ?
For me the binary is in
<basedir of env>/x86_64-conda_cos6-linux-gnu/sysroot/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131.x86_64/jre/bin/java
If you want to take advantage of a direct integration of the java-executable in your environment, then use this:
conda install -c conda-forge openjdk.
This installs the Zulu OpenJDK, which is an open source build of the Java JDK.
Conda-Link: Click me

How can I change java version on local linux server

I built my NetBeans web project with Java 1.5 successfully, however; my linux server supports / uses Java 1.4 and Java 1.5 (as well as JBoss 4.0.2).
When I check the version of my project ( java -version ) it says that the current version is Java 1.4.2. However, I don't want to change the "JAVA_HOME" setting on the server because other projects need to use this version.
I want my project to use Java 1.5 from the server...
An idea as to how I should go about doing this? Is there a configuration that I can change?
I have this error:
java.lang.UnsoupportedClassVersionError: bad Version in .class file
You need Java 1.5 version installed in your Linux server.
Next, run the following set of commands in your terminal/command prompt:
JAVA_HOME="{fix-me}"
export JAVA_HOME
export PATH = $JAVA_HOME/bin:$PATH
In the place holder {fix-me} specify the path of Java 5 that is installed in the Linux machine.
This would only temporarily set the Java version to 5 until the terminal/command prompt session is alive. So you need not worry about disturbing other projects.

pyCharm debugging: JRE without jstack?

I need to debug pyCharm community version on Windows 7 and try to follow what their manual says:
JStack
This command line utility is provided with the JDK installation and
can be found in JAVA_HOME\bin directory. Make sure to use the same or
close JDK version to the one the IDE runs under (see Help | About). It
will not work if IDE runs under 32-bit JDK and you run jstack from the
64-bit JDK distribution and vice versa.
To use jstack you need the IDE process identifier (PID). PID can be
obtained using jps utility that is located in the same directory as
jstack.
jps -mv
My pyCharm: help/about reads: JRE 1.7.0_40 b43 x86
How ever, in C:\Program Files (x86)\Java\jre7\bin there is no jps and no jstack. I'm not used to the command line in Windows - perhaps I'm doing something wrong here? Am I supposed to look in a different directory? I could not find any system wide environmental variable JAVA_HOME what could give any clues here.
Well, you need a Java Development Kit (JDK) instead of a Java Runtime Environment (JRE).
It is a bit larger but has many other dev tools (like jstack, jps, jvisualvm, etc., even the source code of Java). Download and install one to see the differences.

I had Open JDK 1.7 on CentOS; I installed Oracle's Java rpm; Oracle Java doesn't seem to exist

I started off with CentOS and OpenJDK 1.7
# java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
In order to run a specific application, I want to use Oracle's Java 1.6, provided from an RPM.
I copied the Oracle binary to a specific new directory:
# pwd
/oracleJava/jdk-6u45-linux-x64-rpm
I extracted the binary and it gave me the following files:
# ls
jdk-6u45-linux-amd64.rpm
sun-javadb-core-10.6.2-1.1.i386.rpm sun-javadb-javadoc-10.6.2-1.1.i386.rpm
sun-javadb-client-10.6.2-1.1.i386.rpm sun-javadb-demo-10.6.2-1.1.i386.rpm
sun-javadb-common-10.6.2-1.1.i386.rpm sun-javadb-docs-10.6.2-1.1.i386.rpm
I installed the RPM and the rpm utility believes that it installed properly:
rpm -q jdk
jdk-1.6.0_45-fcs.x86_64
# rpm -Uvh ./*.rpm
Preparing... ########################################### [100%]
package jdk-2000:1.6.0_45-fcs.x86_64 is already installed
# rpm -Uvh sun-javadb-*.rpm
[I omit the feedback because it generates a formatting error]
#
However, the Java version just shows 1.7
# java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
In other words, I was expecting the Oracle files to give me some new /java directory somewhere, with a new java executable that would return a different answer for "java -version"
I need that new directory so that I can set JAVA_HOME and use the 1.6 version of Java.
Helpful suggestions would be greatly appreciated. Thanks in advance.
The Oracle JDK RPMs are horrible.
They do not register with the alternatives system.
They do not Provide (in RPM terms) "java"
They have messed up their RPM 'version string' and rely on Epoch (...)
All versions of the JDK (i.e. 1.6 vs 1.7) have the same Epoch
In order to quickly remedy your problem you can run the following:
/usr/sbin/alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000
It will register and prefer the Oracle java installation as an alternative. OpenJDK has weight 16000; here we register with 20000. Once you've run this command you can switch between java versions by using the (already mentioned) alternatives --config java command.
As for a less quick fix you can use my virtual java package. It's quite possibly not perfect (I'm open for improvements ;) ), but it Provides java (making my apache-tomcat package happy) and registers with the alternatives system. This virtual package simply depends on jdk...you can find it here: https://github.com/keystep/virtual-java-rpm
Run the following command to see if your JVM is getting listed.
sudo update-alternatives --config java
If your JVM gets listed select it.
The problem is that Oracle's RPMs are (wilfully IMO!) ignorant of the "alternatives" system.
Instead, they install stuff in a non-standard place (/usr/java) and then expect the user / system administrator to mess with the PATH variable ... by hand.
It is a nuisance!
So what has probably happened in your case is that your JDK / JRE has been installed in a subdirectory of /usr/java ... but since you haven't added the relevant bin subdirectory to the front of your PATH you are still picking up the OpenJDK tools via the java command name.
You can fix this after the fact by using "alternatives" to configure and then select the Oracle commands. But it is messy, especially if you want the JDK tools as well. (There are a lot of them!)
Please check that whether your JAVA_HOME points to JDK 6 using echo $JAVA_HOME. In order change your JAVA_VERSION to Java 6, you need to point to the Java development KIT 6. You also need to add the bin directory to the $PATH variable. Please ensure that JDK6 bin directory comes in the $PATH prior to other JDK bin,if any. You can check the version of your Java in the environment by command java -version.The other answer by learningloop is very perfect to switch between different Java configurations
Try to the following method
delete OpenJDK folder from
/usr/lib/jvm
I had same problem and got solution through this method

Categories