# Problem beim Verschieben der main-class -> A jni error has occured, please check...



## Hein_nieH (30. Nov 2020)

Hallo,

ich habe ein Problem, bei dem mir google auch nicht so recht weiterhelfen kann. 

Ich habe in eclipse ein maven-Projekt, welches sich auch bauen lässt, solange die main-Klasse im Ordner src befindet.
(in Eclipse angezeigt als src->(default-package)  )

Wenn ich die Klasse jedoch via Refactoring-Funktion in ein anderes package verschiebe, dann erhalte ich den o.g. Fehler:


> A jni error has occured, please check your installation


Wenn ich das Projekt in Eclipse als Java-Application starte erschein der Fehler

Im Konsolenfenster erscheint dann zusätzlich


> exception in thread "main" java.lang.SecurityException: Prohibited package name: java.mydefault
> at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:899)
> at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1015)



Ich habe auch schon an der pom.xml herumexperimentiert, aber ohne erfolg.
Kennt jemand den Fehler und kann mir einen Tip geben, wie dieser Fehler zu korrigieren ist?

Gruss Hein_nieH


----------



## httpdigest (30. Nov 2020)

Hein_nieH hat gesagt.:


> Wenn ich die Klasse jedoch via Refactoring-Funktion in ein anderes package verschiebe [...]


In _welches_ Package denn genau?



Hein_nieH hat gesagt.:


> Prohibited package name: java.mydefault


Ich vermute mal, dass dein Package "java.mydefault" heisst. Das ist leider nicht gestattet, da nur das JRE selbst (über den Bootstrap-Classloader) Klassen aus dem Package `java.*` laden darf. Du kannst also ein Package nicht `java.*` nennen.


----------



## Hein_nieH (30. Nov 2020)

Hallo,

ich habe mir ein package + subpackage java.mypackage unter src angelegt. Dorthin habe ich die Main-Klasse (die Klasse enthält nur die Funktion main) reingeschoben.
httpdigetst hat recht, wenn ich das package anders nenne funktioniert es.
Mein Ziel war eigentlich von einem früheren Projekt die Ordnerstruktur wie in Maven aufzubauen.

Wenn ich das richtig verstehe darf das package nicht java heissen oder????

Gruss Hein_nieH


----------



## kneitzel (30. Nov 2020)

Kannst Du uns das evtl. einmal als Bildschirmfoto zeigen, was Du da genau hast? Und dann sehen wir auch die genaue Fehlermeldung noch einmal...

Oder den genauen Aufbau incl. der exakten Fehlermeldung. Vielleicht das Projekt auch einfach einmal als ZIP anhängen, das nicht geht.


----------



## httpdigest (30. Nov 2020)

Hein_nieH hat gesagt.:


> ich habe mir ein package unter src angelegt.


Nochmal die Frage: *Welches* Package genau? Wie heisst das? Was steht in der .java-Datei oben bei `package <wasstehthier>;`?


----------



## Hein_nieH (30. Nov 2020)

Hallo,

der Tipp war gut.
Die Main-Klasse lag unter src.java.mydefault

Wenn ich unter das von mir angelegt package "java" umbenenne dann funktioniert es, z.B. src.xyz.mydefault.

Ich bin nur stutzig geworden, da im Buch "Konfigurationsmanagement mit Subversion, Maven und Redmine ", Autor Gunther Popp,
ein Fallbeispiel demonstriert wird, in dem unter src das package java liegt, also src.java.xxxxx

Gruss Hein_nieH


----------



## httpdigest (30. Nov 2020)

"java" ist nicht das Package, sondern im Gradle/Maven Defaultsetup ist <projectroot>/src/main/java das Source-Verzeichnis, unter welchem dann die Packages und Java-Klassen liegen.
Wenn du also ein Package "mydefault" hast, und darin eine Java-Datei Main.java, dann läge diese unter:
<projectroot>/src/main/java/mydefault/Main.java


----------



## Hein_nieH (30. Nov 2020)

Hallo httpdigest,

Ja mit dem Standard path in maven hast du recht.
Ich frage mich nur wie der Autor in seinem Fallbeispiel das package "java" direkt unter "src" gepackt hat.
Ich habe das Beispiel selbst nicht ausprobiert, sondern auf das vertraut was im Buch stand. Dem Autor halte ich für sehr kompetent.
Daher war mein ursprünglicher Versuch beim Refactoring meines Altprojektes das ein package "java" auch unter "src" zu packen.
Und genau dann kam der Fehler auch wenn ich unter dem package "java" ein weiteres subpackage angelegt habe in welchem dann die Main-Klasse enthalten war.
Zumindestens ist mir damit geholfen, dass ich kein package "java" direkt unter "src" anlegen darf.

Gruss Hein_nieH


----------



## LimDul (30. Nov 2020)

Hein_nieH hat gesagt.:


> Hallo httpdigest,
> 
> Ja mit dem Standard path in maven hast du recht.
> Ich frage mich nur wie der Autor in seinem Fallbeispiel das package "java" direkt unter "src" gepackt hat.
> ...


Der Autor hat mit ziemlicher Sicherheit nicht das Package java unter src gepackt, sondern einen Folder java unter src angelegt.

Die Package-Struktur beginnt erst später, unterhalb des Folders java


----------



## Hein_nieH (30. Nov 2020)

Hallo LimDul,



> Der Autor hat mit ziemlicher Sicherheit nicht das Package java unter src gepackt, sondern einen Folder java unter src angelegt.



... so wird es dann wohl sein.  Dann habe ich das falsch gedeutet.

Gruss Hein_nieH


----------

