Zugriff auf externe .class Dateien (und resourcen) aus JAR

Status
Nicht offen für weitere Antworten.

oliver1974

Aktives Mitglied
Mal folgende Frage:

Gesetzt die class-Datei der Anwendung befindet sich in einem JAR.

Nun habe ich Resourcen, die ich BEWUSST nicht innerhalb desselben Jars haben
will, sondern "normal", also ungepackt im selben Verzeichnis wie das Jar.

(Verzeichnis) dist -> Anwendung.jar
-> de/resources/language.properties

Ich hoffe, das ist halbwegs verständlich..

Nun würde ich gerne mit
ResourceBundle.getBundle("de/resources/language")

mir die Resource holen (in dem Fall eine Properties Datei für eine Sprachvariante)
aber ich bekomm keinen Zugriff drauf.

Das gleiche passiert mir mit Klassen, die nicht innerhalb des Jars liegen...

Ich würde mal ganz stumpf sagen, dass irgendwie der Classpath nicht
korrekt ist.. obwohl ich den (hoffentlich?) korrekt beim Java-Aufruf
übergebe.. oder wird der gnadenlos vom im Manifest des Jars definierten
Classpath übergebügelt?

Oder geht das eventuell gar nicht so, wie ich mir das denke?
 

oliver1974

Aktives Mitglied
Hmm, auf den Trichter war ich auch schon gekommen...

Dabei stieß ich allerdings auf ein Problem, dass aber wohl nicht mehr hierher gehört:

Die Manifest - Datei unter Netbeans wird ja anhand der Projekt-Definition erstellt... kurioserweise wird dort, sobald ich zusätzlich zu den benötigten externen Jars (von denen ich auch welche brauche) ein Verzeichnis angebe, kein lib-Unterordner (der die externen Jars enthalten würde) mehr im dist-Ordner erstellt...

Seltsam, aber ich glaube das gehört ins Netbeans-Forum.

Ich werde erstmal mit einer manuell manipulierten Manifest-Datei experimentieren..
 

oliver1974

Aktives Mitglied
Ich muss das Thema mal wieder nach oben holen..

Ich bastele immer noch daran rum... Was ich mich ernsthaft frage.. Geht das überhaupt?
Ich meine auf eine Klasse oder ein ResourceBundle über den Klassen-Loader zuzugreifen,
wenn die Zieldatei NICHT im Jar ist??

Ich habe langsam meine Zweifel.

Ich kann problemlos Dateien öffnen und auslesen.. kein Problem.. aber etwas via Klassen-Loader
zu Laden, was NICHT innerhalb des JARs ist, will mir nicht gelingen, trotz korrektem classpath
eintrag in der MANIFEST Datei im JAR und korrektem Pfad (vermutlich korrektem Pfad..)

Soll ich mal Beispielcode hochladen?
 

Tom299

Bekanntes Mitglied
das gleiche problem hab ich auch gerade:


Code:
package de.test;

import java.util.ResourceBundle;


public class TestBuilder {

    /**
     * @param args
     */
    public static void main (String[] args) {
        
        System.out.println ("starting application ...");
        
        System.out.println (ResourceBundle.getBundle ("config.TestBuilder").getString ("text.output"));
                
        System.out.println ("exit application ...");
        
    }
}


Code:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.4.2_13-b06 (Sun Microsystems Inc.)
Main-Class: de.test.TestBuilder
Class-Path: ./config


im jar-verzeichnis gibts den unterordner "config" und darin das file "TestBuilder.properties". jemand ne idee was falsch ist?
 

Tom299

Bekanntes Mitglied
lol kaum hab ich es ins forum geschriebt hab ich die lösung selbst gefunden ...

--> Class-Path: .
 

oliver1974

Aktives Mitglied
Dass der Class-Path in der ersten Ausführung falsch war, wundert mich nicht... Nur wundere ich mich, dass es jetzt geht!

Ich bin mir ziemlich sicher, dass ich einen korrekten Classpath drin hatte und er mir immer noch eine Fehlermeldung um die Ohren gehauen hat...

Du kannst jetzt echt aus dem Jar heraus auf ResourceBundles zugreifen, die nicht im Jar, aber im selben Verzeichnis (bzw. einem Unterordner) wie das Jar-Verzeichnis sitzen?
(Sollte ja z.B. bei Netbeans der "dist" Ordner sein...)

Komisch.. bei mir klappt das ums verrecken nicht..

Ich muss da nochmal einen ganz tiefen Blick riskieren..

EDIT: Bist du dir ganz sicher, dass das ResourceBundle auch nicht versehentlich im JAR miteingepackt worden ist?
Dann würde der nämlich das ResourceBundle im JAR referenzieren, nicht das im Ordner... Solltest du ja herausfinden könnten wenn du das ResourceBundle im Verzeichnis temporär entfernst oder mal ins Jar guckst.

Den "Pseudo-Erfolg" hatte ich nämlich auch schon.. bis ich merkte, dass die IDE (natürlich) den benötigten ResourceBundle brav mit ins Jar packte..
 

oliver1974

Aktives Mitglied
Ja, da leg ich mich nieder... aber jetzt gehts bei mir auch... :shock:

Der Durchbruch kam, nachdem ich gerafft hatte, wie ich bei Netbeans die automatische Erstellung der Manifest-Datei und hier insbesondere der Klassenpfade einschränken und selbst übernehmen kann....
Da muss man aber auch erst drauf kommen: In der Ansicht "Files" (nicht "Project") sieht man ja die MANIFEST Datei.. das ist aber mehr eine Vorlage, die automatisch befüllt wird. aber sobald man z.B. unter Class-Path was einträgt, ist man selbst dann für diese Eigenschaft der Manifest Datei verantwortlich.

Nun war es dann auch ein leichtes, mit verschiedenen Class-Paths "herumzuspielen". Vorher war
das ein elendiges Gezupfe und Gezerre, da sich ja die ClassPath-Einträge nach den "Library"-Einträgen
für das Projekt richteten... und das passte irgendwie immer mal wieder hinten und dann wieder vorne nicht....

Zusammen mit einem Ant-Script, dass für die Anlage der benötigten Dateien/Ordner im dist-Verzeichnis sorgt und dem selbst geschnitzen Manifest klappt das ganze jetzt ziemlich gut, soweit ich das bisher sehe.

Da kann man mal wieder sehen, wie einem IDEs manchmal dazwischenfunken und Arbeit verursachen könnnen.
 

Tom299

Bekanntes Mitglied
habe bei mir grad ein weiteres problem festgestellt.

meine-jar datei braucht noch andere jar-bibliotheken (z.b. spring). habe einen weiteren ordner mit dem namen lib angelegt und die benötigten jar-files alle in dieses verzeichnis kopiert und den classpath der manifest dann entsprechend erweitert --> Class-Path: .;lib bzw. Class-Path: .;./lib
beides funzt aber nicht, er kann die entsprechenden resourcen nicht finden. muß man das dem classpath irgendwie anders angeben? hab auch schon für eine einzelne datei Class-Path: .;lib/spring-core.jar bzw. Class-Path: .;./lib/spring-core.jar und Class-Path: .;spring-core.jar aber funktioniert nichts davon. kann mir einer weiterhelfen?

habe gesehen daß es auch oft so gemacht wird, daß man externe jar-files entpackt und dann in das eigene jar-file als unterordner/projekt aufgenommen wird. da suche ich auch schon die ganze zeit, wie man das im build-file von ant einstellt oder hinbekommt, finde aber nicht wirklich eine lösung dazu. jemand da eine idee?
 

Tom299

Bekanntes Mitglied
ok habs doch selbst rausgefunden ...

Code:
<target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
    			<attribute name="Class-Path" value="."/>            	
            </manifest>
        	<zipgroupfileset dir="path/spring" includes="**/spring*.jar"/>
        	<zipgroupfileset dir="path/xmlrpc" includes="**/xmlrpc-2.0.jar"/>
        </jar>
    </target>

durch zipgroupfileset werden die benötigten jars entpackt und in mein eigenes jar wieder eingebettet :)
 

oliver1974

Aktives Mitglied
Komisch, trotzdem hätte doch zumindest das explizite Angeben der einzelnen Jars im Classpath gehen müssen, ich mach das doch auch so in meinem Manifest-File...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Java Zugriff auf Netzwerklaufwerk Allgemeine Java-Themen 1
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
W Zugriff auf Objektvariablen vs. Übergabe Allgemeine Java-Themen 3
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
Tommy Nightmare HTTP Zugriff auf Internetseite im Loginbereich Allgemeine Java-Themen 5
H Zugriff auf PHP Allgemeine Java-Themen 4
B DB-Zugriff einer Webanwendung funktioniert nicht mit Java 7 Allgemeine Java-Themen 2
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
O JNA Zugriff auf Funktion aus DLL Allgemeine Java-Themen 0
O Zugriff auf Windows Zertifikatstore Allgemeine Java-Themen 2
M Kein Zugriff auf microSD Karten Allgemeine Java-Themen 4
T Zugriff auf Datenbank Allgemeine Java-Themen 1
J Zugriff auf IMAP GMail Konto scheitert. Allgemeine Java-Themen 2
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
U Zugriff auf Datei sperren Allgemeine Java-Themen 5
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
C Zugriff auf Event felder Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
F Zugriff Verweigert bei Kopieroperation? Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
S Dynamischer Zugriff Allgemeine Java-Themen 4
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
E Zugriff auf Dateien im Filesystem überwachen Allgemeine Java-Themen 5
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
V Zugriff auf den Objekterzeuger? Allgemeine Java-Themen 4
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B JApplet Zugriff auf Local Storage des Browser? Allgemeine Java-Themen 2
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
J XML Element Zugriff Allgemeine Java-Themen 4
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
M Klassen Zugriff auf getMethode ohne Klasse zu erzeugen Allgemeine Java-Themen 6
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
H Vererbung Abgeleitete Klassen und Zugriff Allgemeine Java-Themen 2
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
D Kein Zugriff auf WebService ausser localhost Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
J Zugriff auf Dateien auf einem shared Folder? Allgemeine Java-Themen 3
H Zugriff auf VBA in Java Allgemeine Java-Themen 2
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
G Letzter Zugriff auf Datei Allgemeine Java-Themen 5
C java.io.FileNotFoundException: (Zugriff verweigert) Allgemeine Java-Themen 14
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
C Webstart: Zugriff auf lokale Dateien? Allgemeine Java-Themen 2
X Zugriff auf ComboBoxen in Hauptklasse von zweiter Klasse aus Allgemeine Java-Themen 8
J Zugriff auf gemeinsame Funktionen Allgemeine Java-Themen 4
Airwolf89 Zugriff auf ArrayList<ArrayList> Allgemeine Java-Themen 3
Airwolf89 Zugriff auf Werte in ArrayList<ArrayList> Allgemeine Java-Themen 4
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
N Zugriff auf eine Referenzvar. Allgemeine Java-Themen 3
S Zugriff auf Klasse Allgemeine Java-Themen 4
Meldanor Mehrdimensionale Arrays : Zugriff auf n-tes Array Allgemeine Java-Themen 5
E JNA:Zugriff auf Common-Block von Fortran bzw. Struct in C Allgemeine Java-Themen 2
T Zugriff auf Singleton verkürzen - Namespaces?? Allgemeine Java-Themen 20
L Zugriff auf ein Objekt mit mehreren Threads Allgemeine Java-Themen 11
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
S Zugriff auf einzelne Bildpunkte Allgemeine Java-Themen 3
D Referenzen weiterreichen vs. statischer Zugriff Allgemeine Java-Themen 3
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
P RegeEx-Problem: Zugriff auf group Allgemeine Java-Themen 2
M Zugriff auf Parallel-Schnittstelle Allgemeine Java-Themen 2
B Zugriff mit einem Applet auf den Datenträger Allgemeine Java-Themen 11
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
I Zugriff auf Daten Allgemeine Java-Themen 5
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
D Zugriff auf Windows Dienste Allgemeine Java-Themen 7
G Zugriff auf Memberclasses einer geladenen Class-Datei Allgemeine Java-Themen 2
I Gleichzeitiger zugriff auf ein Long über Threads Allgemeine Java-Themen 2
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
S Zugriff auf unterschiedliche JREs Allgemeine Java-Themen 7
M "Unzulässiger Zugriff auf einen Speicherbereich" Allgemeine Java-Themen 7
A Zugriff auf Parallelport nur über Eclipse nicht über .jar ! Allgemeine Java-Themen 12
G Zugriff auf ein sama share Allgemeine Java-Themen 8
J Java zugriff auf Exchange Server Allgemeine Java-Themen 10
D eclipse: Zugriff auf Ordner per code Allgemeine Java-Themen 4
O Konkurrierender Zugriff auf Log-Datei mit Log4J Allgemeine Java-Themen 11
Caracasa [Threads] Gleichzeitiger Zugriff auf eine LinkedList Allgemeine Java-Themen 9
L Zugriff auf Objekt das sich in einer Liste befindet Allgemeine Java-Themen 2
J Zugriff auf den Namen einer Variablen Allgemeine Java-Themen 7
J Zugriff auf Map in anderer Klasse Allgemeine Java-Themen 2
J Endlosschleife durch wechselseitigen Zugriff zweier Klassen? Allgemeine Java-Themen 2
F Zugriff auf lokalen Rechner wer weiss Rat ? Allgemeine Java-Themen 16

Ähnliche Java Themen

Neue Themen


Oben