# Linux - Error: Could not find or load main class application.Main



## bassdriver (13. Sep 2016)

Hallo zusammen  
ich habe mittels Eclipse eine JavaFx Anwendung (test.jar) erstellt. Wenn ich diese unter Windows ausführe, egal ob im "Debugmodus" von Eclipse oder per cmd, funktioniert die Anwendung.
Anschließend habe ich die test.jar auf einem Linux - System hochgeladen und mittels "java -jar test.jar" ausgeführt. Nach kurzer Zeit erscheint jedoch der Fehler "Error: Could not find or load main class application.Main".
Das Package zum einstieg der Anwendung lautet "application" und die Klasse "Main" also ist dies doch eigentlich korrekt. Ich habe nach Recherchen die Vermutung das es am "classpath" liegt, jedoch wüsste ich nicht wieso bzw. was ich dort anpassen sollte.

Hat einer von euch eine Idee?
LG


----------



## thecain (14. Sep 2016)

. zum classpath hinzufügen


----------



## bassdriver (16. Sep 2016)

Hallo,
danke für die Hilfestellung.
Jedoch führt dies leider zu keinem Erfolg, eventuell mache ich auch etwas falsch.
Ich habe versucht:

Das .jar-File mit java -classpath test.jar aufzurufen 
In die .bashrc den die Zeile zu ändern export PATH=$PATH:$JAVA_HOME/bin*:.*
Mache ich eventuell etwas falsch?


----------



## VfL_Freak (16. Sep 2016)

Was steht denn im _classpath _überhaupt bei Dir drin??

Hier mal ein Link zu dem Thema
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

Gruß Klaus


----------



## bassdriver (16. Sep 2016)

Hallo 
das .jar-File habe ich im home des pi users abgelegt
vorhin hatte ich dies auch mit export CLASSPATH="." versucht (.bashrc)


```
pi@raspberrypi:~ $ java -jar test.jar
Error: Could not find or load main class application.Main
pi@raspberrypi:~ $ echo $CLASSPATH
/home/pi/
```


----------



## VfL_Freak (16. Sep 2016)

http://www.skylit.com/javamethods/faqs/javaindos.html
http://www.programmierenlernenhq.de/java-programmieren-lernen-wie-kann-man-java-programme-aufrufen/

Gruß Klaus


----------



## bassdriver (16. Sep 2016)

leider hatte ich damit auch keinen erfolg .. eventuell ist einiges bei Windows und Linux unterschiedlich.
Interessant wird es wenn ich eine Anwendung direkt auf dem Linux Rechner schreibe und anschließen mit "javac" Compiliere ... ich lade jeweils aus dem Eclipse Projekt Verzeichnis aus dem Ordner "build" die jar Datei hoch  könnte es auch damit zusammen hängen?


----------



## X5-599 (19. Sep 2016)

Ich könnte mir vorstellen, dass es am ARM Java für den Raspberry liegt. Welche Java Version hast du denn?


----------



## SeriousD0nkey (19. Sep 2016)

Hast du das Projekt mit Maven gebaut? Ich hatte mal öfters das (oder ein ähnliches?) Problem mit Maven und Standalone-Anwendung. Musste dann in der pom.xml eintragen, was die Start-Klasse ist.

Edit: Ok zu spät gelesen, dass du unter Windows das per CMD ausführen kannst. Kann also nicht daran liegen.


----------



## bassdriver (19. Sep 2016)

Hallo 


```
java -version
openjdk version "1.8.0_40-internal"
OpenJDK Runtime Environment (build 1.8.0_40-internal-b04)
OpenJDK Zero VM (build 25.40-b08, interpreted mode)
```

es liegt nicht zwingend am Raspberry auch Ubuntu (auf einer VM) hat gleiche Probleme (nur in deutsch )

```
java -jar test.jar
Fehler: Hauptklasse application.Main konnte nicht gefunden oder geladen werden
```


----------



## X5-599 (20. Sep 2016)

Hier steht zb es wäre nicht mehr Bestandteil des JDK. http://www.oracle.com/technetwork/java/javase/jdk-8u33-arm-relnotes-2406696.html An anderen Stellen meinen Leute dass JavaFX weiterhin zum JDK gehöre und auch ausgeliefert würde. Kann jetzt nicht sagen wie der aktuelle Stand ist. Aber dein Problem hört sich für mich so an als wenn bei deinem JDK die JavaFX Komponenten fehlen.


----------



## JStein52 (20. Sep 2016)

X5-599 hat gesagt.:


> hört sich für mich so an als wenn bei deinem JDK die JavaFX Komponenten fehlen.


Nein, dann wäre die Fehlermeldung anders.


----------



## JStein52 (20. Sep 2016)

Aber um das mit dem JavaFX auszuschliessen kannst du dir schnell eine "Hello World"-Jar machen die ansonsten die gleiche Struktur (Package, Main-Klasse) hat (auf Windows erstellen!) und den gleichen Aufruf auf deinem Linux mal probieren.


----------



## thecain (20. Sep 2016)

für mich hört sich das so an, als würde im manifest die Main datei fehlen.

https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html


----------



## JStein52 (20. Sep 2016)

thecain hat gesagt.:


> für mich hört sich das so an, als würde im manifest die Main datei fehlen.


Dagegen spricht dass es auf Windows ja funktioniert und der Entry-Point application.Main ja genau der richtige ist

Edit: wenn das fehlen würde sieht die Fehlermeldung so aus:

D:\temp>java -jar test.jar
kein Hauptmanifestattribut, in test.jar


----------



## Zybrion (3. Nov 2016)

Hallo,

kannst du mir vielleicht sagen, ob du bereits eine Lösung gefunden hast? Ich hänge nun schon über 12 Stunden daran dieses Problem zu lösen... Ich hab jeglichen StackOverflow thread durch und nichts davon hat geholfen / entspricht genau meinem Problem.

Ich wäre dir sehr dankbar!


----------



## mrBrown (3. Nov 2016)

Auch OpenJDK? Ich würde wie @X5-599 auf fehlendes JavaFX tippen...

OracleJDK nutzen oder OpenJFX installieren dürfte dann helfen, wäre aber interessant zu wissen, ob's der TO hinbekommen hat?


----------



## mirisbowring (23. Mai 2017)

Ich weiß, der Thread ist schon alt, aber das Problem hat sich ja noch nicht gelöst.
Ich habe nämlich genau dasselbe problem, allerdings nicht auf dem PI, sondern auf einem Nativen Ubuntu System.


----------



## mrBrown (23. Mai 2017)

Lösung steht ein Beitrag über deinem.


----------



## mirisbowring (23. Mai 2017)

Inwiefern?
Auf meinem PC läuft Ubuntu bereits mit frisch installiertem JDK8_131.


----------



## mrBrown (23. Mai 2017)

Oracle oder Open?
Und falls letzteres, mit OpenJFX?


----------



## mirisbowring (23. Mai 2017)

Ich verwende die Version von Oracle und habe sie hiernach:
https://wiki.ubuntuusers.de/Java/Installation/Oracle_Java/Java_8/#Java-8-JRE
installiert


----------



## mrBrown (23. Mai 2017)

`java -version` gibt auch das passende aus?

Wie sieht denn der genaue StackTrace aus?


----------



## mirisbowring (23. Mai 2017)

java -version gibt mir 

```
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM(build 35.131-b11, mixed mode)
```
wieder.

Die genaue Fehlermeldung lautet:

```
Hauptklasse application.Main konnte nicht gefunden oder geladen werden
```


----------



## dzim (25. Mai 2017)

OpenJDK oder OracleJDK? Wenn ersteres, dann musst du noch OpenJFX aus dem Paketquellen nachinstallieren. Beim zweiteren würde ich auch auf ein fehlerhaftes Manifest, oder so, tippen.
Ich entwickle im Prinzip exklusiv JavaFX auf Ubuntu, indem ich das OracleJDK nutze. Probleme gibt es da für mich nur mit der Media-API.


----------



## dzim (25. Mai 2017)

HotSpot ist Oracle, wenn ich mich nicht täusche. Wie sieht die Struktur deines JARs aus? Manifest und sind alle .class-Files dort, wo sie hingehören?


----------



## JStein52 (25. Mai 2017)

dzim hat gesagt.:


> Wie sieht die Struktur deines JARs aus? Manifest und sind alle .class-Files dort, wo sie hingehören?


Vermutlich schon denn auf Windows läuft es ja. Das Dumme ist dass schon zwei Leute vorher dieses Problem hatten, sie aber nicht mehr gepostet haben ob und wie sie es lösen konnten.


----------



## thecain (25. Mai 2017)

Ich behaupte einfach mal, im Classpath fehlt "." Also mal mit "-classpath ." kompilieren


----------



## mirisbowring (25. Mai 2017)

Ich habe heute früh Ubuntu komplett neu aufgesetzt (hatte mit dem Prozessor - vor kurzem auf ryzen gewechselt - auf einmal Probleme).
Wieder OracleJDK installiert, und jetzt läuft alles wunderbar 
Aber danke für die Informationen, die man am Rande bekommen hat.


----------

