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?
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.
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????
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
"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
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.
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.