Manifest ?

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Code:
Manifest-Version: 1.0
Main-Class: LibExtStart.Test
Class-Path: dasZuLadendeJar.jar

Wenn mein Manifest so aussieht kann ich die benötigte Klasse aus dem jar ausrufen.
Aber wie müsste das Manifest aussehen wenn das jar z.B. unter D:\jars liegt.
Hatte es schon so probiert:

Code:
Manifest-Version: 1.0
Main-Class: LibExtStart.Test
Class-Path: D:/jars/dasZuLadendeJar.jar

Aber das funktioniert nicht.
Weis jemand was ich da tun müsste??? :autsch:
 
G

Gast

Gast
Ich habe mitlerweile einen haufen Foren und mich fast kaputt gegoogelt. Scheinbar weis keiner eine Antwort darauf, oder es geht nicht. Was ja nicht gerade von vorteil wäre, weil ich gerne mein gesamten benötigeten jars in ein Verzeichniss packen wollte und nur das Manifest ändern wollte.

Ich bitte um Antwort.
 
B

Beni

Gast
Du kannst im Manifest relative Pfade eintragen (relativ zur Position des Haupt-JARs), und mit / die Ordner trennen. Aber ein absoluter Pfad... das gehört nicht in ein Manifest. :wink:
 
G

Gast

Gast
Aber gibt es nicht eine andere Möglichkeit z.B. meinem Eclipse Product/Projekt zu sagen das es die benötigten jars in einem bestimmten Verzeichniss findet?
 
G

Gast

Gast
Normalerweise ja, aber ich habe ein eclipse product, was etwa aus 10 plugins besteht. Wo jedes bestimmte jars braucht. Damit ich aber nicht die jars jeden einzelnen PlugIn hinzufügen muss wollte ich sie an einer zentralen Stelle (nicht lib\ext) haben!
 

ElViZ

Mitglied
Wenn du ein Fat-JAR erstellst, werden alle benötigten JARs (meines Wissens nach) automatisch inkuldiert.
 

L-ectron-X

Gesperrter Benutzer
Weitere externe Jar-Bibliotheken lassen sich im Manifest bekannt machen. Im Gegensatz zum Fat-Jar sind diese schnell durch Austauch aktualisierbar.
Dazu legst du dir ein Verzeichnis an, bspw. lib und speicherst darin alle externen Bibliotheken.
In der Manifestdatei deines Projekt-Jars, welches vorzugsweise eine Verzeichnisebene über dem Verzeichnis lib liegt, listest du nun die Bibliotheken durch Leerzeichen getrennt im Class-Path-Attribut auf.

Das Class-Path-Attribut der Manifestdatei kann dann etwa so aussehen:
Code:
Class-Path: lib/hsqldb.jar lib/swingx-0.8.0.jar lib/gtkswing.jar

Das wars schon.
 
G

Gast

Gast
Aber wie funktioniert das im Falle eines eclipse products. Da gibts als erstes eine startup.jar (Da ist ein Manifest drin) und unter configutions auch noch manifeste und jars mit manifesten. Wo müsste ich das eintragen das die jars(also die Klasse) für das gesamte Produkt bekannt sind??
 
G

Guest

Gast
Ich habe jetzt in der besagten startup.jar unter META-INF dieses Manifest:
Code:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.4.2 (IBM Corporation)
Main-Class: org.eclipse.core.launcher.Main
Class-Path: lib/bcprov-jdk14-131.jar

Aber trotzdem findet er in meinen eclipse product diesen provider nicht.
Was läuft denn das verkehrt oder wo muss das jar file noch überall
angegeben werden
 
G

Gast

Gast
Oh man warum läuft das nit, wenn ichs in eclipse teste gehts, weil der ganze Schrott im Class-Path steht, aber wenn ich nen fertiges eclipse product mache, dann geht nix mehr außer wenn ich die benötigten jars wie bouncy caste usw. in lib\ext packe. Obwohl das eine echt ... Möglichkeit ist. Das beste wäre wirklich wenn hier jemand wüssste wo ich am besten die benötigten jars hinpacken sollte, was ich wo in welchen manifest eintragen muss, oder was ich sonst noch machen muss????????????
 

L-ectron-X

Gesperrter Benutzer
Starte dein Programm mal mit java -jar MeinProgramm.jar
Guck mal, welche Fehlermeldungen ausgegeben werden. Vielleicht kommen wir dem Problem so näher.
 
G

Guest

Gast
Hallo,
Danke erstmal für deine Antwort. Ich habe ja ein eclipse product. Also
eine startup.jar und eine ***.exe. Wenn ich alle benötigeten jars in lib\ext
packe das lässt sich mein product mit der exe und dem jar wunderbar starten
und läuft auch. Aber wenn ich die jars aus lib\ext rausnehme funktioniert das nicht mehr.
Bekomme aber auch wenn ich das jar file mit java -jar starte keine Fehlermeldung.
Aber wenn ich die exe starte wird von dem Produkt starte bekomme ich ein log file
mit einer Exception:
Code:
java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider

BouncyCastle und ........ liegt im Unterverzeichniss \lib

und ich habe folgendes Manifest im startup.jar:
Code:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.4.2 (IBM Corporation)
Main-Class: org.eclipse.core.launcher.Main
Class-Path: lib/bcprov-jdk14-131.jar lib/........

Also gehe ich davon aus wenn er die Klasse nicht in lib\ext findet
sucht er in meinen Unterverzeichniss \lib.
:bahnhof: :bahnhof: :bahnhof:
 
G

Guest

Gast
Geht denn nicht das?


Code:
                                System.out.println( System.getProperty("java.ext.dirs"));
		Properties prop = new Properties();
		prop.setProperty("java.ext.dirs","D:\\jars");	
		System.setProperties(prop);
		System.out.println( System.getProperty("java.ext.dirs"));

Dachte mir einfach das ich damit das lib\ext Verzeichniss wechsele für die Zeit wie ich die Klassen
brauche aber das scheint auch nt so zu laufen!!

?????????? :bahnhof: ???????????
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben