# MANIFEST --> Class-Path



## Chimaira (10. März 2008)

Hoi Leute,

ich habe ein Problem. Ich weiß nicht wie ich mein Programm mit dem Class-Path versehen (für die Libraries).

Ich benutze nämlich die SwingX Komponente und möchte diese von extern her einbinden. 

so soll es aussehen:

```
-> Programm-Ordner
     |--> Programm.jar
     |--> /lib
          |--> swingx.jar
```

Ich hoffe mir kann da jemand helfen. Denn einfach die JAR-Datei erstellen und die MANIFEST im nachhinein ändern geht ja nicht.

Greeze Chimaira


----------



## zerix (10. März 2008)

Hallo,

ich verstehe nicht so ganz dein Problem. Weißt du nicht, wie du den Class-Path im Manifest-File setzen sollst?

Einfach auf lib/Swt.jar setzen. 

Du kannst, wenn du mit eclipse arbeitest, ein eigenes Manifest-File setzen. Also nicht generieren lassen, sondern selbst schreiben und einfügen.


MFG

Sascha


----------



## Chimaira (10. März 2008)

ich probiere es mal mit selber schreiben und nicht generieren lassen. Danke für den Tipp

Greeze Chimaira


----------



## Chimaira (10. März 2008)

sorry fürs pushen, aber wenn ich eine selbstgeschriebene MANIFEST auswähle und dann exportiere dann erstellt er trotzdem eine neue

Ich bin auf using existing .... gegangen und habe die ausgewählt.

Komisch finde ich das man die Manifest Datei nicht von der Festplatte aussuchen kann sondern nur aus offenen Projekten.

Kann mir da jemand helfen?

GReeze Chimaira


----------



## zeja (10. März 2008)

Also ich würde erstmal nen Jar-Export machen und die Manifest mit "Generate" und "Save the manifest in the workspace" erstellen und speichern lassen.

Dann editieren und dann beim nächsten mal auf "Use existing" gehen. Sollte eigentlich funktionieren. Eine Seite vorher am besten noch "Save the descirption of this Jar in the workspace", dann kannst du mit klick darauf ein neues Jar erstellen und musst nicht immer durch den Wizard gehen.

Und wieso sollte man eine Manifest von der Festplatte aussuchen wollen. Die ist doch genau für ein Projekt gedacht, also kann sie auch im Projekt liegen.


----------



## Chimaira (10. März 2008)

hmm das funktioniert nicht. Ey ich habe das jetzt mit Version 3.2 und 3.3 ausprobiert aber es geht einfach nicht.

Diese MANIFEST.MF ist in meinem Projekt:


```
Manifest-Version: 1.0
Main-Class: main.Main

Class-Path: lib/jdom-1.0.jar lib/swingx-0.9.1.jar
```

Diese habe ich durch "Using existing ... " benutzt.

Und nach dem Export habe ich die Zip-File geöffnet und die MANIFEST.MF geöffnet. Dann sieht das ganze so aus:


```
Manifest-Version: 1.0
Main-Class: main.Main
```

Was soll ich nur machen? Es will einfach nicht.

Greeze Chimaira


----------



## zerix (10. März 2008)

Hast du nach der Class-Path-Zeile einen Zeilenumbruch gemacht?

MFG

Sascha


----------



## Chimaira (10. März 2008)

ne habe ich nicht! Ist das relevant ?


----------



## MeinerEiner_80 (10. März 2008)

Moin!
Mit Eclipse kenn ich mich nicht so wirklich aus, aber du kannst das Manifest auch (nachträglich) manuell setzen, mit dem Java Jar Tool (zu finden im \bin Verzeichnises deiner JDK Installation) :

```
jar umf manifest foo.jar
```
Siehe dazu auch:
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/jar.html

*grüssle*
MeinerEiner


----------



## Chimaira (10. März 2008)

aber irgendwie muss das doch mit dem Export klappen ... also ich habe definitiv kein Zeilenumbruch dahinter. Habe es probiert und dann kommt nen Error : Invalid Manifest

Greeze Chimaira


----------



## dadom110 (11. März 2008)

Guten Tag,

ich kenne die Verzwieflung 

FatJar heisst das Zauberwort. Alle deine externen Jars landen sauber in deinem Project Jar. Ist ein Plugin für Eclipse:

schau mal hier:
http://fjep.sourceforge.net/

Grüße
D


----------



## Chimaira (12. März 2008)

ich kenne dieses Plug-In. Dieses extrahiert alle Klassen und packt sie in die Jar. Aber das ist nicht mein Wille. Denn ich wollte die Library extern aufbewahren und das Programm so klein wie möglich halten.

Trotzdem danke für deinen Tipp. Das mit der Manifest t immer noch nicht wirklich!

GReeze Chimaira


----------



## zeja (12. März 2008)

Ich würde dir echt gerne helfen, aber ich weiß momentan echt nicht mehr wie...

Sonst zip mal nen Beispiel und dann schau ich mir das an oder so.


----------



## Chimaira (27. Mai 2008)

hmm.

Ich habe jetzt ein andere Projekt aber immer noch das gleiche Problem.

ich habe meine JAR (mein eigentliches Programm). Dieses Programm liegt in einem Ordner und soll auf eine JAR im Ordner lib zugreifen. Dieser Ordner liegt im Verzeichnis mit meinem Programm.

Das ganze soll wie folgt aussehen:

```
meinProgramm.jar
- lib
  - lib1.jar
  - lib2.jar
```

Meine Manifest sieht so aus:

```
Manifest-Version: 1.0
Main-Class: main.Main

Class-Path: lib/lib1.jar lib/lib2.jar
```

Aber er findet die Klassen nicht! Kann mir da jemand helfen?

Greeze Chimaira


----------



## dspb (12. August 2008)

lass mal die leerzeile vor dem class-path raus und mach dafür danach wieder eine leerzeile rein


----------



## Adi | tmine (29. September 2008)

Ich hatte ein ähnliches Problem. Hab es dann so gelöst, dass ich die Jars in einen Folder gepackt hab.

Sieht dann so aus:
deinProg.jar
lib/deineExterneJar.jar
(Beide zusammen im selben ordner)

in der Manifest.mf dann einfach:
Class-Path: lib/deineExterneJar.jar


bei mir ging es dann plötzlich XD ... wieso man die jars nicht auch in das Programm jar packen kann verstehe ich auch nicht ... =(

naja bei mir läufts nun XD


----------



## JavaJongle (2. April 2009)

Ein kleines Ant-Script hilft auch weiter. Das kann in etwa so aussehen:

=== schnipp ===
<?xml version="1.0" encoding="UTF-8"?>

<project name="MeinProjekt" default="dist">
	<property name="jarfile" value="mein.jar"/>

	<target name="prepare">
	</target>

	<target name="clean">
	</target>

	<target name="compile" depends="clean, prepare">
	</target>

	<target name="dist" depends="compile">
		<echo>erzeuge ${jarfile}</echo>
		<jar 
			basedir="bin"
			jarfile="${jarfile}"
			compress="false"
			manifest="meta-inf\Manifest.mf"
		>
		</jar>
	</target>

</project>
=== schnapp ===

Stell dieses Ant-Skript in dein Eclipse-Projekt ein.
Erzeuge die Datei meta-inf\Manifest.mf  mit den von Dir gewünschten Inhalten, in etwa so:

=== schnipp ===
Class-Path: datei1.jar datei2.jar
=== schnapp ===

Jetzt führst Du das Ant-Script aus (rechte Maustaste / ausführen als... / Ant-Script). Die aufgehende Sonne baut Dir dann ein jar-file mit Manifest, das Deine Vorgaben enthält.


----------

