hilpers


  hilpers > comp.lang.* > comp.lang.java

 #1  
03.07.2004, 17:13
Franz Tucher
Hallo,

ich bin von Eclipse 3 M6 auf das aktuelle Release umgestiegen und habe zwei
dicke Probleme mit meiner RCP Anwendung.

1. Problem:
*********
Im selben Verzeichnis aus welcher der folgende Aufruf erfolgt befindet sich
eine Datei config.ini mit Datenbankparametern.
Diese lese ich ein und baue eine Datenbankverbindung auf. Bei der neusten
Eclipse Version versteht er das nicht mehr (Aufruf aus Eclipse heraus). Die
URL stimmt nicht mehr.

URL urlIni = this.getClass().getResource("config.ini");
System.out.println("url INI: " + urlIni);
System.out.println("url getPath: " + urlIni.toString());
System.out.println("url getFile: " + urlIni.getFile());

liefert nur das seltsamerweise ohne vollen Pfad (file:/D:/... müsste es
sein)::

url INI: bundleresource://13/de/domainame/management/config.ini
url getPath: bundleresource://13/de/domainname/management/config.ini
url getFile: /de/domainname/management/config.ini

Mit Eclipse M6 ging es fehlerfrei. Es kann eigentlich nur mit der Launch
Konfiguration und dem Workspace zusammenhängen aber wieso und was könnte da
falsch sein? Keine Ahnung was
die 13 soll, war auch mal ne 14 etc.

2. Problem:
*********
Das zweite Problem ist ähnlich aber doch verschieden. In dem Ordner icons
habe ich benutzerdefinierte Bilder, also nicht irgendwo innerhalb von
classes, wie es
halt so üblich bei eclipse ist. Ich habe eine von AbstractUIPlugin
abgeleitete Klasse welche die folgende Methode hat:

public static ImageDescriptor getImageDescriptor(String name) {
String iconPath = "icons/";
try {
URL installURL = getDefault().getDescriptor().getInstallURL();
URL url = new URL(installURL, iconPath + name);
return ImageDescriptor.createFromURL(url);
} catch (MalformedURLException e){
return ImageDescriptor.getMissingImageDescriptor();
}
}

Diese Methode habe ich dann von meinen ganzen Klassen immer aufgerufen falls
eigenes Bild gebraucht.

URL installURL .. verursacht nun aber sowas:
java.lang.IllegalStateException
at
org.eclipse.core.internal.runtime.CompatibilityHel per.getPluginDescriptor(Co
mpatibilityHelper.java:52)
at org.eclipse.core.runtime.Plugin.getDescriptor(Plug in.java:258)
.....

Hmm getDescriptor() und getDefault() sind beide nun deprecated.
In der Doku steht als Hinweis: man solle bundle.getEntry("/"); nun nehmen.
Aber ResourceBundle hat keine Methode getEntry()???
http://dev.eclipse.org/viewcvs/index...n.html?rev=1.3
"The best approach is to either put the files in a real, unique, package or
remove such files from the classpath and access them via the
Bundle.getEntry() API."
Und ersterer Ansatz heist also kein icons Verzeichnis mehr auf Höhe wie src
und bin und würde aber sicher zu meinem 1. Problem führen.

Bin für die kleinsten Hinweise dankbar!

Nette Grüße Franz
 #2  
03.07.2004, 17:57
Franz Tucher
Nach Lesen eines eclipse.platform NG Beitrages von gestern
"Newbie Eclipse 3 plugin development questions - help required"
(stöhn) fand ich die richtigen Lösungen.

> 1. Problem:
> *********
> Im selben Verzeichnis aus welcher der folgende Aufruf erfolgt befindet

sich
> eine Datei config.ini mit Datenbankparametern.
> Diese lese ich ein und baue eine Datenbankverbindung auf. Bei der neusten
> Eclipse Version versteht er das nicht mehr (Aufruf aus Eclipse heraus).

Die
> URL stimmt nicht mehr.
>
> URL urlIni = this.getClass().getResource("config.ini");
> System.out.println("url INI: " + urlIni);
> System.out.println("url getPath: " + urlIni.toString());
> System.out.println("url getFile: " + urlIni.getFile());
>
> liefert nur das seltsamerweise ohne vollen Pfad (file:/D:/... müsste es
> sein)::
>
> url INI: bundleresource://13/de/domainame/management/config.ini
> url getPath: bundleresource://13/de/domainname/management/config.ini
> url getFile: /de/domainname/management/config.ini
>
> Mit Eclipse M6 ging es fehlerfrei. Es kann eigentlich nur mit der Launch
> Konfiguration und dem Workspace zusammenhängen aber wieso und was könnte

da
> falsch sein? Keine Ahnung was
> die 13 soll, war auch mal ne 14 etc.


Die URL muss seit 3.0 noch umgewandelt werden:
URL url = null;
try{
url = Platform.asLocalURL(urlIni);
System.out.println("created url: " + url.getPath());
} catch (IOException e1){
e1.printStackTrace();
}

Wieso nur solch ein Firlefanz?!

[..]
> try {
> URL installURL = getDefault().getDescriptor().getInstallURL();
> URL url = new URL(installURL, iconPath + name);
> return ImageDescriptor.createFromURL(url);
> } catch (MalformedURLException e){
> return ImageDescriptor.getMissingImageDescriptor();
> }
> }
>
> Diese Methode habe ich dann von meinen ganzen Klassen immer aufgerufen

falls
> eigenes Bild gebraucht.
>
> URL installURL .. verursacht nun aber sowas:
> java.lang.IllegalStateException
> at
>

org.eclipse.core.internal.runtime.CompatibilityHel per.getPluginDescriptor(Co
> mpatibilityHelper.java:52)
> at org.eclipse.core.runtime.Plugin.getDescriptor(Plug in.java:258)
> ....
>
> Hmm getDescriptor() und getDefault() sind beide nun deprecated.
> In der Doku steht als Hinweis: man solle bundle.getEntry("/"); nun nehmen.
> Aber ResourceBundle hat keine Methode getEntry()???
>

http://dev.eclipse.org/viewcvs/index...n.html?rev=1.3
> "The best approach is to either put the files in a real, unique, package

or
> remove such files from the classpath and access them via the
> Bundle.getEntry() API."
> Und ersterer Ansatz heist also kein icons Verzeichnis mehr auf Höhe wie

src
> und bin und würde aber sicher zu meinem 1. Problem führen.


public ImageDescriptor getImageDescriptor(String name){
String iconPath = "icons/";
try
{
URL installURL = this.getBundle().getEntry("/");
//URL installURL = getDefault().getDescriptor().getInstallURL();
URL url = new URL(installURL, iconPath + name);
return ImageDescriptor.createFromURL(url);
} catch (MalformedURLException e){
return ImageDescriptor.getMissingImageDescriptor();
}
}

Bundle (this.getBundle()) ist eine Eclipse Klasse.

Methode nicht mehr static daher muss man vorher mit getDefault() die Instanz
besorgen.

Die Eclipse 3 Klassen kommen mir komplizierter vor.

Franz
Ähnliche Themen
Eclipse Dialoge bekommen kein Release Event mehr

Hi, hab hier letzten Freitag ein System-Update (sid-System) gemacht und leider seitdem ein Problem mit manchen Dialogen in Eclipse der "Ok" (meist gleichzeitig Default-)...

Eclipse findet javac nicht mehr

Hallo zusammen, nachdem ich lange nichts mehr in Java programmiert hatte (will sagen, bin eher C- und PHP-Programmierer), wollte ich das gerade mal wieder tun. Tja, und mein...

[Eclipse] Start einer eigenständigen Eclipse Anwendung aus Eclipse mit Bibliotheken

Hallo, ich habe folgendes Problem. Ich habe eine Anwendung auf Eclipse Basis entworfen. Als Basis diente die gute Einführung hier [..]. Während der Entwicklung starte ich...

Source in src, Classes in bin... jetzt findet Eclipse meine Resources nicht mehr...

Hallo zusammen! Bisher hatte ich meine Projekte immer so geordnet, dass die Packages (.java & .class) direkt im Project-Pfad lagen. Das Gleiche galt für meine Resources...


Alle Zeitangaben in WEZ. Es ist jetzt 03:44 Uhr. | Privacy Policy