# Classpath in Manifest?



## Guest (4. Feb 2009)

Hallo,

wenn ich in einer Manifest Datei einen Classpath eintragen möchte der auf zwei Jars im Unterordner "jars" verweißt - etwa so:

c:/proggy/proggy.jar
c:/proggy/jars/jar1.jar
c:/proggy/jars/jar2.jar

Wie würde ich das in der Manifest-Datei angeben?

/libs/jar1.jar
libs/jar1.jar
./libs/jar1.jar
...

Und mit welchem Trennzeichen müsste ich die beiden Jars voneinander trennen ? 

,
;


?????

Danke


----------



## mvitz (4. Feb 2009)

```
Class-Path: jars/jar1.jar jars/jar2.jar
```

Getrennt durch Leerzeichen, Pfade realtiv zum jar-File in dem du den Classpath angibst. Trickreich wirds dann noch mit neuen Zeilen


----------



## Wildcard (4. Feb 2009)

der Pfad ist übrigens relativ zum Arbeitsverzeichnis, wenn man also zB in /home/user java -jar /opt/program/jar.jar ausführt, geht das schief.


----------



## mvitz (4. Feb 2009)

Da muss ich dir leider wiedersprechen. Ist abhängig vom jar und nicht vom Arbeitsverzeichnis.
Test:

```
public class A {

        private String a;

        public A() {
                a = "Test";
        }

        public String getA() {
                return a;
        }
}
```


```
public class B {

        public static void main(String[] args) {
                A a = new A();
                System.out.println(a.getA());
        }
}
```
Ant build file:

```
<project name="testJar" default="default" basedir=".">
        <target name="default">
                <mkdir dir="libs" />
                <javac srcdir="." destdir="." debug="on" />
                <jar destfile="B.jar">
                        <fileset dir=".">
                                <include name="B.class" />
                        </fileset>
                        <manifest>
                                <attribute name="Class-Path" value="libs/A.jar" />
                                <attribute name="Main-Class" value="B" />
                        </manifest>
                </jar>
                <jar destfile="A.jar">
                        <fileset dir=".">
                                <include name="A.class" />
                        </fileset>
                </jar>
                <move todir="libs" file="A.jar" />
        </target>
</project>
```

Anschließend lässt sich mit

```
java -jar pfad/zu/B.jar
```
Die jar ausführen. Egal in welchem Verzeichnis man ist. Geht dann sowohl mit relativem als auch absoluter Pfadangabe.


----------



## Wildcard (4. Feb 2009)

habi55 hat gesagt.:
			
		

> Da muss ich dir leider wiedersprechen. Ist abhängig vom jar und nicht vom Arbeitsverzeichnis.


Ok, das ist auch definitiv sinnvoller. Thx


----------

