2017-06-26 5 views
-3

Verwenden keine IDE und versuchen, einige Fehler für eine bereitgestellte War-Datei in tomcat zu beheben. Ich versuche, für Quelle eines Pakets und fehlerhafte Zeile zu suchen scheint Parameter zu verlangen, und von einem Paket wieWie ermittle ich in JAVA, woher ein Import kommt?

import com.somefirm.somepackage.someClass; 

Nach Fragen importiert hatte keine Antwort auf meine Frage:

In eclipse determine which jar file a class is from

How can I find files imported in a java class

Ich möchte wissen, gibt es einen Weg, ich kann Quelle von import manuell finden. Ist es überhaupt möglich oder nicht? Wie sucht eine Klasse nach zu importierenden Paketen?

Edit 1: Die Links mit einem Zeilenumbruch getrennt.

Edit 2: "verwende derzeit keine IDE" war ein bisschen spät in der Frage. SO hinzugefügt Verwenden Sie nicht IDE in der ersten Zeile.

Edit 3: Mehr Klarheit für die Frage, warum ich es brauche.

Edit 4: Diese Änderungen hinzugefügt. Danke an @ Jude-niroshan und @ErwinBolwidt

+2

Bei den meisten IDEs, wenn Sie in die 'someClass' Ihrer Import-Anweisung' STRG + klicken', öffnet die IDE die Quelle für diese Klasse (entweder dekompilierte oder tatsächliche Quelle, wenn Sie die Abhängigkeiten mit der Quelle verknüpft haben Code). Sie können dann mit Ihrer Verzeichnisstruktur einen Verweis erstellen, um zu sehen, welche JAR diese Klasse bereitstellt. –

+0

@TimBiegeleisen Ich verwende keine IDE. – Ayushya

+4

@AyushyaChitransh Es ist ** wirklich ** nervig und schlechte Form, die Bedeutung Ihrer Frage zu ändern, um vorhandene Antworten und Kommentare ungültig zu machen - besonders wenn Sie nicht angeben, dass Sie Ihre Frage bearbeitet haben, –

Antwort

3

Der Punkt ist: Der genaue Ort einer Klasse wird durch Ihre Klassenpfad-Setup bestimmt.

Sie definieren Sie zu einem bestimmten Zeitpunkt, welche Klassen verfügbar sind, wenn Sie Ihre Anwendung kompilieren bzw. welche Klassen mit ihr ausgeliefert werden.

Wenn Sie also keine IDE verwenden, müssen Sie die "Elemente" im Klassenpfad suchen, die für Ihren Build angewendet werden. Zum Beispiel, indem Sie in jede JAR-Datei schauen.

Angesichts Ihrer Kommentare: Ich denke, Sie müssen zurücktreten. Sie scheinen grundlegende Kenntnisse von Java zu fehlen. Sie müssen verstehen, wie, dass WAR-Datei erstellt wird. Es sollte einige Art Build-Beschreibung sein; enthält die Abhängigkeiten und andere Inhalte der WAR-Lieferung. Sie müssen diese analysieren. Darüber hinaus: Wenn diese Pakete von Ihrem Team/Unternehmen/... stammen, könnte eine einfache Dateisuche die Aufgabe erfüllen. Wenn diese Pakete "extern" sind, wie Open-Source-Bibliotheken, dann versuchen Sie vielleicht, einfach nach dem Klassennamen zu suchen. oder wende dich an grepcode.com.

Und die andere Sache, die Sie gefragt: eine zusammengestellt Klasse enthält nur voll qualifizierte Klassennamen. Es gibt keine importieren Anweisungen in Klassendateien nicht mehr. Wenn also eine Klasse eine andere Klasse "benötigt", fordert sie die JVM auf, diese Klasse zu laden (angesichts des vollständig qualifizierten Namens). Und die JVM schaut einfach in den Klassenpfad und lädt die erste Klasse, die dem gegebenen Namen entspricht.

+0

Ich denke, das bedeutet, ich muss in die JAR-Dateien nach "Elementen" suchen, in denen _class path_ definiert ist. Und Jar-Dateien beziehen sich auf diejenigen, die verwendet wurden, um Kriegsdateien zu erstellen? Werden sie nicht in dem Ordner gefunden, der bei der Bereitstellung der Kriegsdatei erstellt wurde? – Ayushya

+2

Siehe meine Updates. Aber mein Bauchgefühl ist: Du musst ** ernsthaft ** zuerst etwas lernen. Wir können Ihnen keine Problemlösungen erklären, wenn Ihnen die Fähigkeiten fehlen, sie zu verstehen - weil Ihr Java-Wissen so begrenzt ist! – GhostCat

+0

@AyushyaChitransh Ein weiteres kleines Update bezüglich importierter kompilierter Klassen. – GhostCat

0

Sie verwenden keine IDE. Have a look at the importance of using an IDE?

Wenn Sie den genauen Quellcode betrachten müssen, müssen Sie das Projekt dieser bestimmten JAR-Datei haben, die Sie haben.Wenn Sie nur kompilierte Java-Interpretationen wie JAR-Datei, WAR-Datei haben, dann müssen Sie eine Java Decompiler verwenden.

Decompiler gibt Ihnen nicht den genauen Quellcode, den der Autor dieser Klasse geschrieben hat, aber es wird einen sehr ähnlichen Quellcode skizzieren. Denken Sie daran, dass das Dekompilieren Reverse-Engineering ist. Dies hilft Ihnen, die fehlerhaften Stellen zu identifizieren, wenn die JRE (Java Runtime Environment) die kompilierten Java-Interpretationen verwendet.

Um eine bestimmte Klasse JAR-Datei zu finden, you can search on the maven central repository in der Hoffnung, dass es dort auf dem größten Java-Repository wäre. Wenn nicht, viel Glück beim Finden im Internet. :-)