Fehler: Hauptklasse konnte nicht gefunden oder geladen werden?

...komplette Frage anzeigen

1 Antwort

Also ich lade sicher nicht eine unbekannte ZIP Datei aus einer unbekannten Quelle herunter.

Wie hast du die Datei "decompiled" ? Woher stammt diese Datei? Wo hast du eine Hauptklasse definiert? 

Ich habe jedoch die Main-Class richtig eingegeben 

Sicher? Wie und wo hast du das gemacht?

 sagt nicht das ich googeln soll

Welche Eigeninitiative hast du dann bisher verwendet? Wir kennen deine Arbeitsschritte nicht, deshalb wäre das das mindeste, was wir von dir verlangen können ohne deine Arbeit doppelt zu machen.

TheMatrixLP 20.08.2016, 03:20

Hallo KnusperPudding,

In der Zip Datei ist der src. Falls du denkst, die Zip könnte eine Schadware enthalten, kann ich sie auf Google hochladen, weil man dadurch die zip online entpacken kann ;) Deswegen kannst du dann auch sichergehen, dass da kein Virus oder änliches verpackt ist. 

Ich habe die java Datei mit CFR decompilet und die Hauptklasse war der Main Klasse natürlich zugewiesen. Woher ich weiß, dass ich den Klassenpfad richtig eingegeben habe? Die fertige Jar Datei enthällt eine Meta-Inf Datei, die den Pfad zur Hauptklasse zeigt. 

Ich habe mehrere Male mit Eclipse versucht die Hauptklasse mit "Run with Java Application" auszuführen. Auch have ich den Pfad bei der Konfiguration eingegeben und mehrmals vor der Ausführung den Pfad nachgeprüft.

Die hochgeladene Zip Datei habe ich direkt in Eclipse importiert und hab auch alles hoffentlich richtig eingestellt. 

Wenn es dir was nützt kann ich auch das Eclipse Projekt auf Google hochladen.

Was du mit "Eigeninitiative" meinst verstehe ich nicht so ganz. Ich hab auf der ersten Seite bei der Suche auf Google nach "Fehler: Hauptklasse konnte nicht gefunden oder geladen werden" alle Links bis zum geht nicht mehr gestöbert und auch ein paar YouTube Videos geschaut. Sie haben mir aber nicht wirklick weitergeholfen, da ich alle Schritte, die mir dort vorgeschlagen wurden schon gemacht habe. 

Ich habe da aber so eine Vermutung, dass beibder Dekompilierung etwas schiefgegangen ist und die Hauptklasse deswegen nicht geladen werden konnte.

Die Klassen brauchten auch Admin Rechte, um auf ein paar Klassen zuzugreifen. Auch die Main Methode brauchte Admin Rechte, die ich aber nicht geschafft habe zu erteilen :/ Die Datei macht KEIN Schaden, da sie lediglich die Adminrechte braucht, um die hosts Datei in Windows zu ändern

Hier die ZIP auf Google: 

https://drive.google.com/file/d/0B1ucsM9EZLVXbVJfNklxeVlrYzA/view

0
KnusperPudding 20.08.2016, 11:00
@TheMatrixLP

Hallo Matrix,

somit habe ich mir das angesehen und hierbei folgende Punkte:

  1. Erstelle in deiner IDE ein neues Projekt. 
  2. Kopiere die 3 Haupt-Ordner: com, net, org in in deinen SRC Ordner
  3. Jetzt wirst du feststellen, was das Problem ist, denn 100% hat der Decompiler wohl nicht funktioniert.
  4. Sämtliche Textstellen sind rot unterlegt weil die Methodenaufrufe falsch sind:return .separateCamelCase(f.getName(), "-").toLowerCase(Locale.ENGLISH);-->return separateCamelCase(f.getName(), "-").toLowerCase(Locale.ENGLISH);was bedeutet, dass das hier alles von Hand zu korrigieren ist.
  5. Die einzige Main-Methode die ich sehe, befindet sich hier: net.mcleaks.authenticator.Authenticator
  6. Die Main Methode scheitert beim starten, da sämtliche Ressourcen fehlen:FXML-Datei, in welcher das Layout des Authenticators gespeichert istSämtliche. PNG Dateien wie success.png, icon.png, etc

Die paar falschen Codestellen lassen sich von einem bisschen Erfahrenem Auge auch von Hand lösen. Aber die FXML wäre so das mindeste was du von den Ressourcen bräuchtest, und das wäre dein Knackpunkt ob du diese auftreiben kannst, denn ohne die wird es wohl nicht gehen.

Wenn das alles in ein eigenes Projekt übertragen hast, kannst du bei diesem natürlich die Authenticator-Klasse als Main-Klasse festlegen.

1
TheMatrixLP 26.08.2016, 22:40
@KnusperPudding

Danke für die hilfreiche Antwort, 

Wie du bereits erwähnt hast, dass der Decompiler nicht 100% funktioniert hat fiel mir schon am Anfang auf. 

Ich habe jedoch vergessen zu erwähnen, dass ich nur die Hauptklasse wieder compilen will. 

Du hast auch gesagt das ein paar Resourcen fehlen, die ich jetzt in dem Ordner, in dem auch die Ordner com, net und org sind gespeichert habe.

 Manche Textstellen sind auch Rot unterstrichen, weil sie Zugriff auf JavaFX benötigen, und diesen nicht haben. Ich habe versucht Eclipse als Administrator auszuführen, jedoch konnte trotzdem nicht auf JavaFX zugegriffen werden. 

Ich finde die falschen Methodenaufrufe jedoch nicht und weiß somit nicht, wie ich es beheben soll.

Es wäre echt hilfreich, wenn du mir sagen könntest, wo das Problem auftaucht und wie es zu lösen ist bzw kannst du mir auch ein guten Decompiler vorschlagen wenn das hilft.

0
KnusperPudding 27.08.2016, 00:35
@TheMatrixLP

 Manche Textstellen sind auch Rot unterstrichen, weil sie Zugriff auf JavaFX benötigen

Ja, richtig. Der Bereich: FXML lässt eindeutig auf JavaFX schließen.

Eclipse als Administrator Starten dürfte nicht die Lösung sein. Viel mehr die Projekt-Eigenschaften prüfen, ob das Projekt mit Java 8 kompiliert wird.

Ich habe jedoch vergessen zu erwähnen, dass ich nur die Hauptklasse wieder compilen will. 

Ja, aber wenn Abhängigkeiten bestehen, kann es sein, dass es Trotzdem nicht 

Ich finde die falschen Methodenaufrufe jedoch nicht und weiß somit nicht, wie ich es beheben soll.

Wenn du dein Dekompiliertes Projekt in ein Eclipse Projekt kopierst, sind sehr viele Klassen rot, die sich aber relativ simpel wieder hinbiegen lassen, Beispiel:

com.google.gson.FieldNamingPolicy:

 @Override
 public String translateName(Field f) {
return .upperCaseFirstLetter(f.getName());
}

Muss korrigiert werden zu:

@Override
public String translateName(Field f) {
return FieldNamingPolicy.upperCaseFirstLetter(f.getName());
}

Diese Fehler siehst du, da sie direkt in rot als Fehler unterstrichen angezeigt werden.

Manchmal hat der Decompiler Generics weggelassen wodurch es zu Type-Fehlern kommt:

com.google.gson.Gson:

Hier wird dir das untermalt.

if ((ongoingCall = threadCalls.get(type)) != null) {

Korrektur:

Map threadCalls = this.calls.get();

zu:

Map<TypeToken<?>, FutureTypeAdapter<?>> threadCalls = this.calls.get();

Aber alle Punkte durchzugehen dauert zu lang, da hier 30+ Klassen von Betroffen sind.

1
TheMatrixLP 31.08.2016, 22:15
@KnusperPudding

Hallo,

Ich werde versuchen das Problem jetzt mit deiner Hilfe zu lösen. 

Danke für deine Hilfe :D Ich melde mich sobald ich wieder Probleme bekomme :D 

0

Was möchtest Du wissen?