Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar

  • Themenstarter Themenstarter dnyle
  • Beginndatum Beginndatum
D

dnyle

Gast
Hi,

kurz zu meinem Hintergrund: Ich bin Softwareentwickler bin aber das letzte mal vor ca 10 Jahren mit Java in Kontakt gekommen. Da einer unserer Zulieferer nun auf Java umgestiegen ist, besteht meine Aufgabe zu überpüfen inwiefern seine Software in unser System integrierbar ist.

Nun zu meinem eigentlichen Problem welches ich bisher nicht so beschrieben im Internet finden konnte:

Das Softwarepaket des externen Zulieferers besteht aus einer Sammlung von .jar Files und einigen .java Sourcen die für den Zugriff auf eben diese .jars geschrieben wurden. Die meisten, habe nicht alle durchgeschaut, die .jars kann ich in eclipse einbinden und deren Struktur (Klassen, Methoden, Variablen) im Package Explorer (habs auch mit Jar Explorer probiert) betrachten.

Die .java Sourcen für den Zugriff, importieren nun genau eines dieser Packete welches die Interfaces zu den anderen Programmteilen deklariert und somit den Zugriff gewährleistet. Der Hacken an der Sache ist nun das der Inhalt genau dieses einen .jar Packetes nicht angezeigt werden kann. Lediglich die Klassennamen sind sichtbar jedoch weder Methoden, Konstruktoren oder Variablen. Ergo werden die import Anweisungen als "not resolved" markiert und ich kann darauf nicht zugreifen.

Meine Frage ist daher nun:
Kann es sich dabei um einen Fehler in der importierten .jar handeln oder gibt es Umstände die den Zugriff auf die Konstruktoren, Methoden verhindern? Konnte das Problem auch nicht mit einem selbst geschriebenen Programm reproduzieren. Für ein konstruktives Feedback wäre ich sehr dankbar oder auch Links die mir das Problem beschreiben.


Vielen Dank

dnyle
 
... Sammlung von .jar Files und einigen .java Sourcen die für den Zugriff auf eben diese .jars geschrieben wurden.

mmmh, also die java-Sourcen
Code:
(XY.java)
sind sicherlich NICHT für den Zugriff auf die
Code:
 XYZ.jars
geschrieben worden, sondern sind wahrscheinlich einige der Quell-Dateien deiner
Code:
XYZ.jars
.
Und um damit richtig zu arbeiten, solltest du nur die
Code:
XYZ.jars
zum Buildpath in Eclipse adden und die Sourcen entsprechend als Sourcen
Code:
(XY.java)
bei eclipse einfügen.
 
Danke schonmal für die erste Antwort. Hätte ich eventuell auch so beschreiben können, denn so mach ich es. Die Java (.java) Files wurden mir separat in die Hand gedrückt da sie vor einiger Zeit von einem internen Mitarbeiter für eben diesen Zweck entwickelt wurden. Die .jars sind hingegen vom Zulieferer.

Leider besteht momentan kein Kontakt zum Autor der .java files daher muss ich mich da gerade durcharbeiten.

Wie Du schon gesagt hast sind die externen .jars mittels Buildpath in mein Project integriert. Die .java files habe ich regulär wie jede andere in ein eclipse package gepackt und hab auch vollen Zugriff auf die Sourcen nur sind die imports halt nicht "resolveable"

z.B
Java:
import de.paket.nochnpacket.IDiesIstEinInterface

IDiesIstEinInterface ist nun in meinem ominösen .jar definiert und deklariert etc. und ich kann sie im Package Explorer auch sehen (als .class). Im Gegensatz zu den Klassen aus anderen Paketen ist da aber Schluss: Also keine Variablen, Methoden, etc. sichtbar.

Wenn ich eine dieser .class Files aus meiner .jar extrahiere und in einem weiteren Projekt einbinde erhalte ich übrigens folgende Warning:


This .class file doesn't follow the class file format specification. Please report this issue against the .class file vendor


Da setze ich momentan an...vielleicht finde ich was
 
Um weitere Informationen zu meinem Problem zu geben werd ich ergänzen was mir aufgefallen ist:

Die Klassen die momentan im Fokus liegen nenne ich mal wie folgt

ComFramework.class
IComFramework.class


wobei ComFramework.class das Interface IComFramework.class implementiert.

Wie schon erwähnt kann ich ComFramework.class im Package Explorer mitsamt seiner Methoden und Variablen durchforsten bei der InterfaceKlasse ist das nicht der Fall.

unter Verwendung von javap kann ich zudem ComFramework.class ohne Fehler analysieren bei IComFramework.class erhalte ich jedoch folgende Fehlermeldung:

Error: error while reading constant pool for IComFramework.class: unexpected tag at #1 : 211

mir scheint das die IComFramework.class in irgendeiner Weise corrupted ist, auch wenn das grad ein Schuss ins Blaue ist.

Werd mich wohl mal mit dem Zulieferer in Verbindung setzen müssen und schaun ob die da Support anbieten, bzw ob und wie sie auf diese Klasse zugreifen können.

Weitere Hilfe ist natürlich gern gesehen :rtfm:
 
Zuletzt bearbeitet:
Nach weiteren Nachforschungen bin ich über einen Beitrag gestoßen in dem erwähnt wird dass bei der Verwendung des Scripts ant von Apache Binärdateien beim Kopieren korrumpiert werden können. Da unser Zulieferer genau dieses System verwendet wurde mein Verdacht weiter erhärtet.

Bei Interesse hier nochmal der Eintrag den ich zu diesem Thema gefunden habe:

Ok I finally found the mistake I made. It has neither something to do with
Cayenne nor with Tomcat nor whatever. When building my project I use Ant and
I had a build file with a copy statement and a filter token expression which
was also applied to the binary class files...

http://ant.apache.org/manual/CoreTypes/filterset.html

Note: When a filterset is used in an operation, the files are processed in
text mode and the filters applied line by line. This means that the copy
operations will typically corrupt binary files. When applying filters you
should ensure that the set of files being filtered are all text files.

It tooks me quite long, original file and filtered file had exactly the same
length. There was only one different byte value...



Letztendlich ist es mir gelungen an eine andere Quelle für meine verwendeten .jars zu kommen und deren Inhalt lässt sich ohne weiteres im Jar Explorer betrachten. Sprich Konstruktoren, Methoden und Variablen sind sichtbar. Die Funktionalität werde ich aber erst testen können sobald diese .jars offiziell freigegeben sind.

Jedoch denke ich das das Kernproblem gelöst ist und dieser Thread zu den Akten gelegt werden kann.


Bis zum nächsten Problem...😀

dnyle
 
Vielen Dank für deine erklärenden Posts. Habe den Thread ineteressiert verfolgt. An solchen Problemen kann man sich mitunter ganz schön die Zähne ausbeißen!
 

Zurück
Oben