Hallo ich habe seit heute ein java buch um minecraft plugins zu programmieren aber es kommt eine fehlermeldung, undzwar wenn ich einen code kompiliere kommt eine fehlermeldung:
Code:
import org.bukkit.plugin.java.JavaPlugin;
public class Halloweltplugin extends JavaPlugin {
public void onEnable() {
this.getLogger().info("Hallo Welt!");
}
plugin.java:1: error: package org.bukkit.plugin does not exist
import org.bukkit.plugin.javaPlugin;
^
plugin.java:3: error: cannot find symbol
public class plugin extends JavaPlugin {
^
symbol: class JavaPlugin
plugin.java:5: error: cannot find symbol
getLogger().info("Hallo");
^
symbol: method getLogger()
location: class plugin
3 errors
Das liegt daran, dass die Klasse groß geschrieben wird:
Java:
importorg.bukkit.plugin.[B]J[/B]avaPlugin;
Ich möchte noch anfügen, dass es echt ehrenwert ist, wenn man wegen Minecraft beginnt das Programmieren zu lernen.
Aber um ein Plugin zu entwickeln benötigt man etliches wissen um Java selbst; Gewisse Entwicklungsparadigmen und dann natürlich kentnisse der Plugin API.
Du machst dir das Leben sehr schwer, wenn du beim letzteren anfängst. Ich wünsche viel Erfolg! Es lohnt sich aber auf jeden Fall dran zu bleiben!!
es kommt immernoch. ich hab echt kein plan wieso, ich sitze hier seit mindestens 3 stunden und immernoch ne fehlermeldung
Code:
plugin.java:1: error: package org.bukkit.plugin does not exist
import org.bukkit.plugin.JavaPlugin;
^
plugin.java:3: error: cannot find symbol
public class plugin extends JavaPlugin {
^
symbol: class JavaPlugin
plugin.java:5: error: cannot find symbol
getLogger().info("Hallo");
^
symbol: method getLogger()
location: class plugin
3 errors
Es kommt mir dann doch die Frage auf: Willst du Java lernen oder ein Minecraft Mod schreiben oder möchtest du Java lernen, um ein Minecraftmod zu schreiben?
Nenne doch einfach einmal das genaue Buch - evtl. Shane ich da auch Zugriff drauf über O’Reilly Learning. Dann kann ich da mal vergleichen.
Wie genau übersetzt du den Code? Wenn Du da paar mehr Details nennst, dann kriegen wir das hin.
Lass Dich von so anfänglichen Problemen nicht demotivieren so Probleme kommen nur ganz am Anfang. Und diese Probleme können wir ggf. noch so lösen, dass du da weniger Probleme haben wirst. (Wenn ich auf das Buch zugreifen kann, dann schaue ich mal genauer, was sich da machen lässt. Eine Entwicklungsumgebung wie IntelliJ macht schon Sinn und viel Komplexität kann man ignorieren/ ausblenden. Dazu dann aber ggf. später mehr.
Ok, auf das Buch habe ich auch Zugriff. Aber ich komme heute nicht mehr dazu, mir das alles im Detail anzusehen und dazu etwas zu schreiben. Ich werde es mir morgen einmal im Detail ansehen.
Evtl. kannst Du noch kurz Details nennen, was Du im Rahmen des Buches installiert hast. Sprich: Welche Version hast Du wovon installiert und wo liegt das? (Also speziell der Server Ordner mit dem Spigot oder craftbukkit).
Ok, auf das Buch habe ich auch Zugriff. Aber ich komme heute nicht mehr dazu, mir das alles im Detail anzusehen und dazu etwas zu schreiben. Ich werde es mir morgen einmal im Detail ansehen.
Evtl. kannst Du noch kurz Details nennen, was Du im Rahmen des Buches installiert hast. Sprich: Welche Version hast Du wovon installiert und wo liegt das? (Also speziell der Server Ordner mit dem Spigot oder craftbukkit).
Ok, auf das Buch habe ich auch Zugriff. Aber ich komme heute nicht mehr dazu, mir das alles im Detail anzusehen und dazu etwas zu schreiben. Ich werde es mir morgen einmal im Detail ansehen.
Evtl. kannst Du noch kurz Details nennen, was Du im Rahmen des Buches installiert hast. Sprich: Welche Version hast Du wovon installiert und wo liegt das? (Also speziell der Server Ordner mit dem Spigot oder craftbukkit).
also ich habe java installiert jEdit und intellj
als server version hab ich spigot 1.19.4
Der server geht aber beim plugin komplimieren kommt immer ne Fehlermeldung
Nun zu dem kritischen Punkt:
- Die Übersetzung startest Du mit einem Aufruf ähnlichjavac Halloweltplugin.java -cp .../[B]bundler/libraries/spigot-api-1.19.4-R0.1-SNAPSHOT.jar[/B]
Bei diesem letzten Schritt ist wichtig, dass Du die Datei spigot-api-1-19.4-r0.1-SNAPSHOT.jar aus dem bundler/libraries Ordner angeben musst.
Der Aufruf deutet dies nur an - die ... müssen mit dem Pfad ersetzt werden, wo Du das ausgeführt hast. Und unter Windows gibt man in der Regel \ an statt / (Wobei Windows auch mit den / umgehen können sollte).
Aber ganz wichtig: Du gibst nicht das jar File spigot-1.19.4.jar an, das Du in den ersten Schritten ausgeführt hast sondern Du gibst die Datei spigot-api-1-19.4-r0.1-SNAPSHOT.jar an, die beim Aufruf entpackt wurde in bundler / libraries.
Das sollte dann funktionieren.
Ich denke, dies erklärt die Probleme. Daher ist es wichtig, dass Du Dich nicht ärgerst, dass Du über dieses Problem gestolpert bist. Versuche einfach einmal weiter zu machen an der Stelle mit der beschriebenen Änderung. Ich werde noch weiter schauen, was da im Buch noch beschrieben wird um zu schauen, ob es Sinn macht, da noch weitere Hilfen aufzubereiten.
Generell gilt aber: Solltest Du noch einmal über irgend etwas stolpern und etwas, das im Buch beschrieben ist geht bei Dir nicht, dann melde Dich direkt erneut. Wir helfen da sehr gerne weiter! Ich wünsche Dir auf jeden Fall viel Spaß und Erfolg bei den weiteren Schritten!
Dann ist das Java Development Kit nicht richtig installiert oder der Pfad ist nicht richtig gesetzt.
Nutzt Du Windows? Dann wäre meine Empfehlung:
Deinstalliere das bereits Installierte Java.
Lade die Java Version, die Du nutzen willst, von https://adoptium.net/ herunter. Das ist ein OpenJDK mit einem guten Installer.
Beim Installieren kommt eine Auswahl, was Du alles installieren willst - da alles auswählen, also dass der Pfad gesetzt wird, dass die JAVA_HOME Umgebungsvariable gesetzt wird und dass ein paar früher übliche Registry Keys gesetzt werden.
Danach sollte es funktionieren.
Solltest Du kein Windows nutzen, dann sag bitte erst noch, welches Betriebssystem Du nutzt.
Also nicht die vorhandene Version aktualisieren sondern wirklich deinstallieren und dann eine Version installieren, wo sicher ist, dass die richtig installiert wurde. Du hast uns noch keine wirklichen Details gegeben, welche Version du genau installiert hast. Bei der Webseite von dem Buch wird auf das Oracle JDK verwiesen. Das sollte eigentlich auch gut funktionieren, aber anscheinend gibt es da irgendwelche Stolpersteine, denn vor kurzem hatte jemand anderes auch genau so ein Problem. (Ich meine, die haben auch genau dieses Buch benutzt - also evtl. ist das etwas, das da steht, was nicht mehr aktuell ist? Aber ich will da nicht herum raten, denn das hilft nicht wirklich.)
Dieses Adoptium ist das OpenJDK, hinter dem eine Foundation steht (Die Eclipse Foundation) und dahinter stecken auch mehrere Firmen (IBM, Microsoft, ...) Und als OpenJDK ist es Open Source und man hat keine Oracle Lizenz Stolpersteine. Das nur in Kürze, um zu erläutern, wie ich zu dieser Empfehlung komme.
Dann ist das Java Development Kit nicht richtig installiert oder der Pfad ist nicht richtig gesetzt.
Nutzt Du Windows? Dann wäre meine Empfehlung:
Deinstalliere das bereits Installierte Java.
Lade die Java Version, die Du nutzen willst, von https://adoptium.net/ herunter. Das ist ein OpenJDK mit einem guten Installer.
Beim Installieren kommt eine Auswahl, was Du alles installieren willst - da alles auswählen, also dass der Pfad gesetzt wird, dass die JAVA_HOME Umgebungsvariable gesetzt wird und dass ein paar früher übliche Registry Keys gesetzt werden.
Danach sollte es funktionieren.
Solltest Du kein Windows nutzen, dann sag bitte erst noch, welches Betriebssystem Du nutzt.
Welche Java Version hast Du installiert? Wenn du auf die Webseite gehst, dann dürfte dir Java 17 angeboten worden sein als „Schnellstart“. Dazu würde ich Dir aktuell auch raten. Spigot scheint mit Java 17 gut klar zu kommen (das habe ich auf dem Mac und da lief es).
Falls du also 1.8 installiert haben solltest, dann könnte es daran liegen.
Aber Alternativ könntest du auch erst einmal IntelliJ nutzen. Da würde ich dir raten, in den Einstellungen auf die neue UI zu schalten (ich glaube, die ist noch immer nicht der default). Die ist deutlich aufgeräumter und da verwirren die ganzen Funktionen von IntelliJ deutlich weniger.
Ich schreibe morgen mal etwas mehr dazu - wie man da ein Projekt aufsetzen sollte und wie die wichtigsten Schritte da sind.
mir erging es ähnlich. Und meinem Jungen von der Arbeit ebenfalls. Der Tipp mit der Errata war super, jedoch half dies nichts. Ähnlich erging es uns, trotz neuem Notebook, mit der OpenJDK. Wir sind zurzeit ein wenig frustriert und hoffen, dass es bald eine Lösung gibt.
Fehlermeldung
Java:
[/B]C:\serverbukkit\plugins\HWP>javac HalloWeltPlugin.jar -cp C:\serverbukkit\bundler\libraries\bukkit-1.20.4-R0.1-SNAPSHOT.jar
Fehler:Klassennamen"HalloWeltPlugin.jar" werden nur akzeptiert, wenn die Annotationsverarbeitung explizit angefordert wird
1Fehler[B]
Versuchen es nun mit Spigot, vielleicht bringt es ja eine Änderung.
Update
Zweite Fehlermeldung
Java:
C:\serverbukkit\plugins\HWP>javac HalloWeltPlugin.java -cp C:\serverbukkit\bundler\libraries\bukkit-1.20.4-R0.1-SNAPSHOT.jar
HalloWeltPlugin.java:3:Fehler:Symbol nicht gefunden
publicclassHalloWeltPluginextendsJavaPlguin{^Symbol:KlasseJavaPlguinHalloWeltPlugin.java:5:Fehler:Symbol nicht gefunden
this.getLogger().info("Hallo Welt!");^Symbol:MethodegetLogger()2Fehler
javac erwartet erst die Optionen und dann die Source Files.
Eine Option ist das -cp mit dem Jarfile dahinter.
Daher wäre der Aufruf javac -cp C:\serverbukkit\bundler\libraries\bukkit-1.20.4-R0.1-SNAPSHOT.jar HalloWeltPlugin.java
vermutlich schon besser.
Das gilt auch für den ersten Aufruf, aber da macht die Angabe eines jar Files keinen Sinn.
Und was ist dieses bukkit-1.20.4-R0.1-SNAPSHOT.jar? Das sagt mir so nichts. Da wäre meiner Erwartung eine Library wie spigot-api-....
Aber evtl. ist das ja doch die notwendige jar.
1. Bei Bukkit habe ich das Wort Plugin korrigiert, was keine Veränderung brachte.
2. Bei Spigot (es war eine Hoffnung) habe ich alles erneut installiert, geschrieben und versucht zu kompilieren, jedoch gleiches Ergebnis.
@ Marinek - Was mache ich nun? Im Handbuch stand zuvor nichts von Classpath Importen oder Klasse anlegen. Dies soll, soweit ich es gelesen habe, entsteht nach dem Kompilieren eine Class Datei, die uusammen mit einer Info Datei (plugin.yml) zu einer Jar Datei erstellt werden soll.
Hier einmal der Code vom Plugin und die Fehlermeldung
Ich habe mich jetzt gerade entschlossen, es noch einmal neu zu machen und jetzt funktioniert es. Warum es jetzt klappt, ist mir total schleierhaft, und das wurmt mich auch, da ich die Veränderung nicht sehe.
Ich hoffe mal, dass dies einfach ein Bestandteil des Lernens ist.
Stand jetzt ist, dass eine Class Datei erstellt wurde.
Vielen Dank zunächst einmal für die Hilfe.
Ich denke, es wird nicht das letzte Mal sein, dass ich mich melde.
Falls Du auch die Installation neu gemacht hast, dann könnte ich mir vorstellen, dass es ggf. die Datei
C:\server\bundler\libraries\spigot-api-1.19.2-R0.1-SNAPSHOT.jar
nicht gegeben hat. Der angemeckerte import ist korrekt und wenn de spigot-api im classpath ist, dann sollte es übersetzen.
Mit dem Import war diese Zeile gemeint: import org.bukkit.plugin.java.JavaPlugin;
und die ist ja zumindest jetzt vorhanden in Deinem Code.
Ich bin am Überlegen, ob es evtl. Sinn macht, eine Entwicklungsumgebung zu nutzen. Dann dürfte einiges einfacher werden. Falls Du das mal Ausprobieren möchtest, dann kann ich dazu mal etwas schreiben und evtl. mal ein kleines Video machen. Aber ich habe keinen Überblick, was das Buch noch so alles im weiteren beschreiben wird. Es. macht natürlich keinen Sinn, jetzt z.B. IntelliJ zu nutzen, wenn im nächsten Kapitel plötzlich mit Eclipse gearbeitet wird oder so. Ich kenne das Buch nicht und daher könnte es Sinn machen, da evtl. erst einmal gemeinsam etwas auf das Buch zu schauen.
Falls Du auch die Installation neu gemacht hast, dann könnte ich mir vorstellen, dass es ggf. die Datei
C:\server\bundler\libraries\spigot-api-1.19.2-R0.1-SNAPSHOT.jar
nicht gegeben hat. Der angemeckerte import ist korrekt und wenn de spigot-api im classpath ist, dann sollte es übersetzen.
Mit dem Import war diese Zeile gemeint: import org.bukkit.plugin.java.JavaPlugin;
und die ist ja zumindest jetzt vorhanden in Deinem Code.
Ich bin am Überlegen, ob es evtl. Sinn macht, eine Entwicklungsumgebung zu nutzen. Dann dürfte einiges einfacher werden. Falls Du das mal Ausprobieren möchtest, dann kann ich dazu mal etwas schreiben und evtl. mal ein kleines Video machen. Aber ich habe keinen Überblick, was das Buch noch so alles im weiteren beschreiben wird. Es. macht natürlich keinen Sinn, jetzt z.B. IntelliJ zu nutzen, wenn im nächsten Kapitel plötzlich mit Eclipse gearbeitet wird oder so. Ich kenne das Buch nicht und daher könnte es Sinn machen, da evtl. erst einmal gemeinsam etwas auf das Buch zu schauen.
vielen Dank zunächst für deine Rückmeldung und den Hinweis zu einer Entwicklungsumgebung zu wechseln. Dies ist bereits geschehen, JEdit wurde durch Eclipse ausgetauscht, da später im Buch dort die Plugins geschrieben werden.
Morgen treffe ich den Jungen wieder und werde zunächst alle Schritte samt Errata und den Hinweisen hier umsetzen, damit auch er eine Idee davon bekommen kann, was und warum wir es zuvor nicht umsetzen konnten.
So, hier bin ich für uns wieder.
Wir sind dann gleich beim nächsten Plugin gescheitert. Da wir nun versuchten mit Eclipse zu schreiben.
Uns werden gleich zu Beginn zig Errors angezeigt, noch ehe wir zum Kompilieren oder weiteren Schritten übergehen.
Da dies im Buch nicht näher beleuchtet wird, sind wir wieder einmal frustriert, da wir die Fehler nicht selbst behoben bekommen.
Das sieht danach aus, dass die Abhängigkeit nicht eingebunden wurde.
Wichtig ist, dass die jar Datei im Classpath eingebunden wurde und nicht im Modulepath.
Zum Prüfen bitte in die Einstellungen des Projekts und da dann auf "Java Build Path" gehen. So dort die jar Datei, die an der Kommandozeile per -cp immer angegeben wurde, nicht aufgeführt ist, dann einfach über den Knopf Add External JARs die jar Datei hinzufügen.
Ihr seid so lieb. Wie KonradN schon andeutete, war da was nicht korrekt eingebunden. Dennoch half dies nichts. Habe das erste Plugin nochmals versucht, welches ohne Eclipse übrigens uns möglich war, und leider kein Erfolg.
Das Problem hier ist, dass mit Java 9 sogenannte Module eingeführt wurden. Die bringen einige gute Features mit sich aber sie verkomplizieren vieles. Auf die Features möchte ich nicht weiter eingehen - nur die kurze Information dürfte hier wichtig sein:
Ohne eine Modulbeschreibung (das ist die module-info.java) ist das Modul das anonyme Modul und das hat all die Eigenschaften, die Du hier brauchst (in erster Linie ein requires auf alles, was im Classpath ist).
Und die Problematik hier kommt, weil vermutlich das Buch ursprünglich komplett zu Java 8 Zeiten geschrieben wurde und es danach bezüglich dieser Module nicht angepasst wurde.