JAR Dateien werden nicht erkannt?!

Nospherates

Erfahrenes Mitglied
Hi!
Ich bin mir zwar recht sicher, dass es zu dem Thema was gibt, aber nach JAR kann man hier ja nicht suchen -.- und alle Seiten wollte ich jetzt nicht durchklicken.

Ich bin grade dabei mit einem System den Server zu wechseln und dazu gehört auch eine Java Anwendung. Ich hab die selbe JAVA Umgebung installiert, die selbe CLASSPATH Variable angelegt und die Ordnerstruktur exakt kopiert. Wenn ich jetzt jedoch z.B. eine Klasse kompilieren will, findet er einige Pakete nicht.

Die Pakete mit den dazugehörigen Klassen liegen aber alle in JAR Dateien. Wenn ich die Dateien per WINRAR im selben Ordner entpacke findet JAVA die benötigen Komponenten auch. Ich hab nur absolut keinen Schimmer warum er die JAR Dateien nicht anzieht, hatte eigentlich nicht vor alle zu entpacken.

Hat da jemand einen Ansatz was da noch falsch laufen könnte? Wäre für jeden Tipp dankbar.
 
Ich weiß ja nicht ob ich dich richtig verstanden habe deswegen wiederhol ich nochmal..

du hast EINE Java Anwendung die sich auf die klassen der anderen bezieht. Diese findet er aber nicht außer wenn du sie entpackst. Hoffe ist richtig.

Dann würd ich die EINE Anwendung nehmen (falls Jar entpacken) und die anderen jar als bibliotheken einbinden.

Bin aber noch eher ein Java anfänger also warte lieber noch auf bessere Vorschläge ^^
 
Moin,

auch muss eher noch als Java-Anfänger gelten ... :rolleyes:
Ich hatte hier auch schon mehrfach in meinem JBuilder das Problem, dass einzelne Pakete nicht auflösbar waren. Es dann immer geholfen, sie einmal aus dem Erstellungspfad zu löschen und anschließend wieder einzufügen (warum auch immer ..... )!

Gruß
Klaus
 
Also um es mal an einem Beispiel festzumachen:

Ich hab z.B. eine Klassendatei StatsBuilderMain.java. Die Datei liegt unter C:\java\tomcat\webapps\root\web-inf\classes\beans

Wenn ich die nun kompiliere sagt er z.B.
beans\StatsBuilderMain.java:8: package org.apache.commons.logging does not exist

unter commons-logging.jar gibt es aber die Struktur org\apache\commons\logging

Was mich besonders wundert, ist das es anscheinend bei dem ein oder anderen jar funktioniert und das es auf dem anderen Server alles einwandfrei klappt, weswegen die JARs auch alle funktionieren müssten -.-
 
unter commons-logging.jar gibt es aber die Struktur org\apache\commons\logging

ääh - wie? "...unter xxx.jar..." ? ? :suspekt:
Wenn ich Dich richtig verstehe, existiert also der von Dir genannte Pfad, oder ?
Und in welchen Pfad liegt bei Dir diese jar-Datei?

Wie gesagt, lösche sie mal aus dem Erstellungspfad und füge sie dann wieder ein. Anschließend das Projekt aktualisieren (mit <F5> - zumindest bei mir im JBuilder) und compilieren ! Sollte eigentlich helfen .......

[EDIT]
Gruß
Klaus
 
die commons-logging.jar liegt unter c:\java\tomcat\common\lib ... der Pfad ist auch in der CLASSPATH eingetragen. Wenn ich die Datei mit WINRAR öffne seh ich eben den Pfad zu dem Pakt logging, das er nicht findet. Wenn ich jetzt die JAR Datei im selben ordner entpacke, findet er das Paket wiederrum.

Ich arbeite ohne Entwicklungsentgebung ala JBuilder. Sprich nur mit nem Texteditor und eben der Konsole zum kompilieren, von daher kann ich deinen Tipp leider nicht wirklich befolgen.

Ich kenn mich jetzt nicht wirklich gut mit der JAR Architektur aus, aber es kann auch nicht daran liegen dass ich mehrere JARS hab, die teilweise die selbe Struktur haben oder? Mit Org fangen da nämlich einige an (wobei ich mich dann wieder fragen würde warum das auf dem anderen Server geht oO)
 
Ich arbeite ohne Entwicklungsentgebung ala JBuilder. Sprich nur mit nem Texteditor und eben der Konsole zum kompilieren
Ach so - ja, damit kenne ich mich leider nun gar nicht aus ... :rolleyes:

die commons-logging.jar liegt unter c:\java\tomcat\common\lib ... der Pfad ist auch in der CLASSPATH eingetragen. Wenn ich die Datei mit WINRAR öffne seh ich eben den Pfad zu dem Pakt logging, das er nicht findet. Wenn ich jetzt die JAR Datei im selben ordner entpacke, findet er das Paket wiederrum.
Ich nutze zwar Tomcat nicht, aber zwei andere LIBs auf die gleiche weise wie von Dir beschrieben. So wie es verstehe, musst Du sie wohl entpacken und in die Struktur legen, um sie compilieren zu können!

Ich kenn mich jetzt nicht wirklich gut mit der JAR Architektur aus, aber es kann auch nicht daran liegen dass ich mehrere JARS hab, die teilweise die selbe Struktur haben oder? Mit Org fangen da nämlich einige an (wobei ich mich dann wieder fragen würde warum das auf dem anderen Server geht oO)
das glaube ich nicht! Der Pfad mit "org/irgendwas" bezeichnet ja 'nur' den den Dateipfad des Pakets. Auch ich habe hier jede Menge Dateien in vergleichbaren Pfaden liegen! Allerdings JAVA-Files! Du musst daran denken, dass eine JAR-Datei ja lediglich eine gepackte Datei ist, die also immer entpackt sein muss, wenn der Inhalt compiliert werden soll!

Gruß
Klaus
 
Du musst daran denken, dass eine JAR-Datei ja lediglich eine gepackte Datei ist, die also immer entpackt sein muss, wenn der Inhalt compiliert werden soll!

Naja ich will die Dateien in der JAR ja nicht komplilieren. Das würde auch nicht gehen, weil die schon kompiliert sind ;). Ich will ja lediglich auf einige Funktionen daraus zugreifen. Die Dateien die ich kompilieren will, sind in keiner JAR Datei.

Naja ich seh's schon kommen... muss wohl echt alles entpacken :(
 
Hallo,

hmm, bei reinen LIBs sollte es aber reichen, wenn sie im ClassPath stehen .... das ist bei mir auch so. Er sieht hier so aus:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="lib" path="C:/Developing/Java/foxtrot-2.0/lib/foxtrot.jar"/>
    <classpathentry kind="lib" path="C:/Developing/Java/jco/lib/jco.jar"/>
    <classpathentry kind="lib" path="C:/Developing/Java/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar"/>
    <classpathentry kind="lib" path="C:/Developing/Java/SerialIO/jspComm.jar"/>
    <classpathentry kind="lib" path="C:/Developing/Java/SerialIO/Serialio.jar"/>
    <classpathentry kind="lib" path="C:/Developing/Java/edtftpj-2.0.3/lib/edtftpj.jar"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JDK 1.5"/>
    <classpathentry kind="output" path="classes"/>
</classpath>

Auf dem Webserver, von wo aus Du startest, müssen sie auch vorhanden sein - ebenso in der JNLP-Datei !

gruß
Klaus
 
Hm okay... wenn ich CLASSPATH die JAR Dateien explizit angebe scheint es zu funktionieren. Aber eine viel bessere Lösung, als die alle zu entpacken ist das ja nun auch nicht. Ich hab auf dem anderen System auch nur 2 Angaben im CLASSPATH und der zieht sich alle JAR Dateien automatisch. Kann man das vielleicht irgendwo einstellen? Bin jetzt auf jedenfall einen Schritt weiter... die JAR Dateien kann er ja demnach lesen, nur ignoriert er sie offenbar, wenn ich sie ihm nicht exakt vorgebe -.-... Danke schonmal!
 

Neue Beiträge

Zurück