Netbeans findet keine main class

Problem

Netbeans 8.1 kompiliert unter Kubuntu 20.10 zwar Java-Programme, kann diese jedoch nicht starten, da angeblich keine main Klasse zu finden sei. Die Klassen scheinen korrekt übersetzt zu sein. Ein aus lediglich einer Klasse bestehendes Programm kann man von der Kommandozeile durchaus starten. Das erzeugte jar ist aber fehlerhaft, es startet auch von der Kommandozeile nicht.

Ursache

In der Konfiguration von Netbeans ist ein fehlerhafter Pfad zur Java-Plattform angegeben. Dieser Wert kann nicht innerhalb der grafischen Oberfläche geändert werden. Man kann zwar weitere Java-Plattformen hinzufügen, die fehlerhafte kann aber weder gelöscht noch eine alternative Plattform ausgewählt werden. Der "Remove"-Button ist ausgegraut, sobald man die fehlerhafte default-Plattform im Dialog auswählt.

Lösung

Man öffnet im Installationsverzeichnis von Netbeans die Datei etc/netbeans.conf. Je nachdem, wie man Netbeans installiert hat (oder aus den Paketquellen oder Installationsskript von der Herstellerseite), kann diese Datei an unterschiedlichen Stellen zu finden sein. Innerhalb der Datei sucht man dann die Stelle:

netbeans_jdkhome=

Die vollständige Zeile lautet wahrscheinlich wie folgt:

netbeans_jdkhome="/usr"

Was leider ganz einfach falsch ist. Ein korrekter Eintrag sieht (auf meinem Kubuntu 20.10) wie folgt aus:

netbeans_jdkhome="/usr/lib/jvm/java-11-openjdk-amd64"