Was muss alles in die Manifest.mf?

Warum trägt eclipse diesen Class-Path eigentlich nicht richtig ein!? Im Projekt muss ich doch im Build path genau diese Abhängigkeiten angeben!?
 
Nur mal so als Idee:
Vielleicht klappt das mit dem mehrzeiligen Classpath, wenn du neue Zeilen mit einer Leerzeile beginnst. Hab ich aber nie ausprobiert (Kenn ich aber von den Manifest-Dateien aus OSGi-Bundles, dort müssten die verschieden Werte aber sogar noch durch Komma getrennt werden...).

Also z.B.
Code:
Class-Path: lib/swt.jar lib/org.eclipse.jface_3.2.0.I20060605-1400.jar 
 lib/org.eclipse.osgi_3.2.0.v20060601.jar
 
Deine Idee war Gold wert ;-) Das ist der Rätsels Lösung.

Jetzt habe ich dennoch weiterhin das Problem, dass beim starten des JARs keine Fehlermeldung ausgegeben wird. Ich starte die Datei über die kommandozeile. Es kommt kein Fehler und die Eingabeaufforderung wird wieder angezeigt.

Damit bin ich am gleichen Punkt wie als ich ein großes JAR mit FatJar erzeugt habe. Da es mit Fatjar nicht geklappt hat, ging ich den Weg über den Jar Export von Eclipse.

Jemand eine Idee warum das so ist?
 
Ich konnte das Problem eingrenzen. Es scheint am Code zu liegen. Ich habe in meiner Main folgenden Aufruf:

Code:
private void createSShell()
{

	resource = Resource.getInstance();
...

Resource.java sieht folgendermaßen aus:

Code:
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;

public class Resource
{
	//	For a singleton instance
	private static Resource instance = null;
	public ColorRegistry colorRegistry = null;
	public ImageRegistry imageRegistry = null;
	
	protected Resource()
	{
		colorRegistry = new ColorRegistry();
		imageRegistry = new ImageRegistry();
		
		addImages();
		addColors();
	}
	
	public static Resource getInstance()
	{
		if (instance == null)
		{
			instance = new Resource();
		}
		return instance;
	}
	
	private void addImages()
	{
		Display display = Display.getDefault();
		
		imageRegistry.put("Bild", new Image(display, getClass().getResourceAsStream("/images/blue.ico")));
	}
	
	private void addColors()
	{
		colorRegistry.put("blue", new RGB(0,39,159));
		colorRegistry.put("green", new RGB(102,204,51));
		colorRegistry.put("orange", new RGB(0253,153,0));
	}
}

Im Projektordner liegt ein Verzeichnis "images" mit dem Inhalt "blue.ico".

Wenn ich die Codestelle "resource = Resource.getInstance();" rausnehme, startet die .jar. Wenn nicht passiert garnichts, wenn ich draufklicke.

:confused::confused::confused:
 
Hmm, mit anderen Worten er findet das Icon nicht? Da muss ich auch ab und zu mit kämpfen - also so Sachen aus Jar-Files zu laden ist leider nicht so leicht wie direkt aus der Verzeichnisstruktur. Mit getResourceAsStream verwendest du aber eigentlich schon die genau richtige Methode. Vielleicht probierst du das mal über die Klasse und nicht über die Instanz. Also statt
Code:
getClass().getResourceAsStream("/images/blue.ico")
lieber
Code:
Resource.class.getResourceAsStream("/images/blue.ico")
Ist aber auch wieder nur geraten ... bei so Jar-Files muss ich meistens was rumprobieren, bis es richtig geht.
 
Zurück