openJDK comes without javac

Hi all!

I tried to compile a simple Java programme. I was surprised I ran into command-not-found error. Turns out


which javac 
which: no javac in ...

I have, however, an installed JDK on my machine:


sudo zypper se jdk 
Loading repository data... 
Reading installed packages... 
 
S  | Name                             | Summary                            | Type 
---+----------------------------------+------------------------------------+----------- 
   | java-10-openjdk                  | OpenJDK 10 Runtime Environment     | package 
   | java-10-openjdk-accessibility    | OpenJDK 10 accessibility connector | package 
   | java-10-openjdk-demo             | OpenJDK 10 Demos                   | package 
   | java-10-openjdk-devel            | OpenJDK 10 Development Environment | package 
   | java-10-openjdk-headless         | OpenJDK 10 Runtime Environment     | package 
   | java-10-openjdk-javadoc          | OpenJDK 10 API Documentation       | package 
   | java-10-openjdk-jmods            | JMods for OpenJDK 10               | package 
   | java-10-openjdk-src              | OpenJDK 10 Source Bundle           | package 
i+ | java-11-openjdk                  | OpenJDK 11 Runtime Environment     | package 
   | java-11-openjdk                  | OpenJDK 11 Runtime Environment     | srcpackage 
   | java-11-openjdk-accessibility    | OpenJDK 11 accessibility connector | package 
   | java-11-openjdk-demo             | OpenJDK 11 Demos                   | package 
   | java-11-openjdk-devel            | OpenJDK 11 Development Environment | package 
i+ | java-11-openjdk-headless         | OpenJDK 11 Runtime Environment     | package 
   | java-11-openjdk-javadoc          | OpenJDK 11 API Documentation       | package 
   | java-11-openjdk-jmods            | JMods for OpenJDK 11               | package 
   | java-11-openjdk-src              | OpenJDK 11 Source Bundle           | package 
   | java-1_8_0-openjdk               | OpenJDK 8 Runtime Environment      | package 
   | java-1_8_0-openjdk               | OpenJDK 8 Runtime Environment      | srcpackage 
   | java-1_8_0-openjdk-accessibility | OpenJDK 8 accessibility connector  | package 
   | java-1_8_0-openjdk-demo          | OpenJDK 8 Demos                    | package 
   | java-1_8_0-openjdk-devel         | OpenJDK 8 Development Environment  | package 
   | java-1_8_0-openjdk-headless      | OpenJDK 8 Runtime Environment      | package 
   | java-1_8_0-openjdk-javadoc       | OpenJDK 8 API Documentation        | package 
   | java-1_8_0-openjdk-src           | OpenJDK 8 Source Bundle            | package 
   | java-9-openjdk                   | OpenJDK 9 Runtime Environment      | package 
   | java-9-openjdk-accessibility     | OpenJDK 9 accessibility connector  | package 
   | java-9-openjdk-demo              | OpenJDK 9 Demos                    | package 
   | java-9-openjdk-devel             | OpenJDK 9 Development Environment  | package 
   | java-9-openjdk-headless          | OpenJDK 9 Runtime Environment      | package 
   | java-9-openjdk-javadoc           | OpenJDK 9 API Documentation        | package 
   | java-9-openjdk-jmods             | JMods for OpenJDK 9                | package 
   | java-9-openjdk-src               | OpenJDK 9 Source Bundle            | package 
   | slf4j-jdk14                      | SLF4J JDK14 Binding                | package 

Searching for javac alone did not help


sudo zypper se javac 
Loading repository data... 
Reading installed packages... 
 
S | Name                        | Summary                                          | Type 
--+-----------------------------+--------------------------------------------------+-------- 
  | javacc                      | A Parser and Scanner Generator for Java          | package 
  | javacc-bootstrap            | A Parser and Scanner Generator for Java          | package 
  | javacc-demo                 | Examples for javacc                              | package 
  | javacc-javadoc              | Javadoc for javacc                               | package 
  | javacc-manual               | Manual for javacc                                | package 
  | javacc-maven-plugin         | Maven Plugin for processing JavaCC grammar files | package 
  | javacc-maven-plugin-javadoc | Javadoc for javacc-maven-plugin                  | package 
  | javacc3                     | A parser/scanner generator for java              | package 
  | javacc3-demo                | A parser/scanner generator for java              | package 
  | javacc3-manual              | A parser/scanner generator for java              | package 
  | javacc3-repolib             | A parser/scanner generator for java              | package 

(As far as my google skills reach, javacc is something unrelated.)

This is pretty confusing. I expected the Java Development Kit to come with the Java Compiler. At least, I expected to be able to install javac easily. Note that note even software.opensuse.org is of great help here.

What do I miss? How can I install a complete Jave toolchain on Leap?

Hi
But not the development package…


java-11-openjdk-devel            | OpenJDK 11 Development Environment | package 

Thanks, that fixed it.

Then again, it leaves me a little puzzled: In my opinion, a -devel package should be for development of openJDK. It is against my interpretation that for using javac, I am forced to install the development package (I don’t need python-devel to run a Python script etc). That’s a weird decision imho.

Try YaST/Zypper Repository (SUSE Linux): https://bell-sw.com/pages/repositories/#zypper

**erlangen:~ #** zypper lr BellSoft 
Alias          : BellSoft 
Name           : BellSoft Repository 
URI            : http://yum.bell-sw.com/ 
Enabled        : Yes 
GPG Check      : (r ) Yes 
Priority       : 100 (lowered priority)
Autorefresh    : On 
Keep Packages  : Off 
Type           : rpm-md 
GPG Key URI    : https://download.bell-sw.com/pki/GPG-KEY-bellsoft 
Path Prefix    :  
Parent Service :  
Keywords       : --- 
Repo Info Path : /etc/zypp/repos.d/repo-bellsoft.repo 
MD Cache Path  : /var/cache/zypp/raw/BellSoft 
**erlangen:~ #**

No. foo-devel is for development software that is using or based on foo, i.e. developing against foo. openjdk-devel is for developing java programs, not openjdk itself.

It is against my interpretation that for using javac, I am forced to install the development package

You use javac to compile java program that you develop. You do not use javac to run compiled program.

(I don’t need python-devel to run a Python script etc).

You do not need javac to run Java program.

That’s a weird decision imho.

Or you simply do not understand it.

No need to be rude, @pbiel is absolutely right that most packages that have a -devel suffix are meant for compiling the package itself (or to use the headers to compile other software that uses it as a library). Maybe Python was an odd example as it is an interpreted language, but the point still holds, python-devel is to compile the Python interpreter, not to develop Python programs.

In the Java world a JDK always has included javac. It literally means java development kit. If you are only interested in running Java programs, there is the JRE (java runtime environment) for that.

Sun and later Oracle have always used that nomenclature in their official downloads, as well as most Linux distributions.