Filelocator

Status
Nicht offen für weitere Antworten.

noisebreath

Bekanntes Mitglied
Hi
hab einen code im netz gefunden der die schritte beschreibt wie man ein file in einem bundle ansprechen kann:
Code:
	private static final String OWLExtraction = "OWLExtraction";
	//ResourceBundle bundle =  ResourceBundle.getBundle(OWLExtraction);
	Bundle bundle =  Bundle.getBundle(OWLExtraction);
	URL fileURL = FileLocator.find(bundle, "text2onto.properties", null);
	InputStream in = fileURL.openStream();

Bei mir meckert er bei FileLocator. Er bietet mir keinen import oder so an. Daher gehe ich mal stark davon aus dass der Code Falsch ist.. wobei ich die sache mit dem filelocator hier im forum öfters gesehen habe. er (eclipse) kennts aber wohl nicht.. kann mir jemand sagen was ich hier verbessern muss dass es klappt?

achja der Originalcode stammt von hier. hab ihn ein wenig angepasst weil Platform z.b. nichtmal getBundle hatte..

FAQ How do I find out the install location of a plug-in? - Eclipsepedia
 
Zuletzt bearbeitet:

noisebreath

Bekanntes Mitglied
oki also, innerhalb eines plugin kann ich importieren aber nicht innerhalb eines javaprojects. wie kann ich einen relativen pfad innerhalb eines java projects machen.

die sache ist die: aus dem java project mache ich eine jar die ich in mein plugin einbinde. dieses verweist innerhalb auf einen pfad den ich eben gerne auf den pfad des plugins setzen will weil ich in der plugin directory die gewollte properties file habe.
wie kann ich da bewerkstelligen wenn ich den flelocator nicht benutzen kan ninnerhalb des java projects?
 
M

maki

Gast
die sache ist die: aus dem java project mache ich eine jar die ich in mein plugin einbinde.
Wenn du mit "eine jar machen" nicht "ein OSGi Bundle machen" bzw. "ein Eclipse Plugin machen" meinst, dann bist du komplett auf dem Holzweg.
 

noisebreath

Bekanntes Mitglied
dann bin ich wohl auf dem holzweg. das heisst ich muss daraus ein plugin machen um den pfad relativ zu holen? mit nem einfachen jar gehts nicht?
 
M

maki

Gast
"komplett auf dem Holzweg" muss ich relativieren.

Wenn deine jar von einem OSGi bundle/Eclipse Plugin genutzt werden soll, wäre es am sinnvollsten daraus ein OSGi Bundle bzw. ein Eclipse Plugin zu machen.

Aber... ich verstehe immer noch nicht was du vorhast...
Wer soll jetzt das Property File lesen?
Die jar?
Dein plugin?
Irgendetwas anderes?
 

Wildcard

Top Contributor
Dir fehlt wohl org.eclipse.core.runtime als Bundle Dependeny. EInfach im Manifest eintragen.
*verschieb*
 

noisebreath

Bekanntes Mitglied
also mein jar greift auf eine properties file zu. das jar wiederum wird von einem plugin eingebunden.
Also war letztlich meine Frage, kann ich Pfade in einem Jar so relativ schreiben(wenn ja wie?), dass diese dann eingebunden in einem plugin auch funktionieren?
scheinbar wohl nicht. jedenfalls nicht über den filelocator so wie ich das verstanden habe.
 
Zuletzt bearbeitet:

dzim

Top Contributor
FileLocator ist - das kann ich wohl behaupten - nur für das Suchen von Dateien in Bundles gedacht (unabhängig ob sie als Verzeichnis oder jar vorliegen). Da du das allerdings ausserhalb des BundleKontextst nutzen willst, weiß ich nicht, wie sinnvoll das Ganze ist.
Wenn du den Pfad kennst, warum suchen?
Wenn du nur in Jars bist, nimm die JarApi und lass dir den entsprechenden Eintrag des Jars als Stream geben.
Wenn du es in Bundles machst

Code:
			File statisticsPropertiesFile = new File(FileLocator.toFileURL(
					StatisticsActivator.getDefault().getBundle()
							.getEntry(STATISTICS_PROPERTIES_BUNDLE_PATH))
					.getFile());

			statisticsProperties = new Properties();
			statisticsProperties.load(new FileReader(statisticsPropertiesFile));

so hab ich das gemacht eine interne property Datei gelesen. STATISTICS_PROPERTIES_BUNDLE_PATH ist dabei der relative Pfad innerhalb des Bundles zur Datei... Nur so als Tipp.
Vielleicht könnte man es schöner und besser machen, das oben genannte ist halt mein derzeitiger Stand des Wissens.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben