2010-12-30 9 views
2

Ich habe ein Eclipse-Plugin entwickelt und darin habe ich eine Java-Datei, die versucht, Verzeichnisse zu lesen und dann das Ergebnis entsprechend aufzufüllen. Wenn ich versuche, die Datei von Eclipse selbst über Run> Java-Anwendung auszuführen, gibt es mir ein richtiges Ergebnis, aber sobald ich versuche, dasselbe über Eclipse Application auszuführen, wird NullPointerException ausgelöst, da das Verzeichnis nicht gefunden werden kann.Problem beim Lesen der Datei in einer Eclipse-Plugin-Anwendung

Ich habe versucht, die folgenden Möglichkeiten- Angenommen, ich habe ein Paket als -

Package - com.test.abhishek.file.java.TestWork.java

Directories - com.test .abhishek.file.java.Dir1 com.test.abhishek.file.java.Dir2 Jetzt in TestWork.java- Input ist = HelpContentView.class.getResourceAsStream ("/" + dirName); **

Die obige Zeile wird fehlgeschlagen. Wie soll ich mein Verzeichnis behalten und wo es auch als Eclipse-Plugin laufen soll.

Versuchte von TestWork.class.getClassLoader den Klassenpfad zu finden(). GetResource (""). GetPath() und die Ausgabe als / bekommen So, jetzt, wo soll ich meine Verzeichnisse Dump ressolve .

Antwort

1

Offenbar benötigen Sie die API findEntries.

Für einige Beispiel-Code, überprüfen Sie die damit verbundene Frage (und Antwort) bei How to test if a URL from an Eclipse bundle is a directory?

+0

Paul verwenden Bundle.getEntry wollen .... Können Sie mir bitte das Szenario in Eclipse erklären. Ich meine, wie man es debuggt. –

+0

Suchen Sie die Datei build.properties im Paketmanager. Öffne es. Stellen Sie sicher, dass die benötigten Ressourcen überprüft werden. –

+0

@Abhishek Aktualisiert meine Antwort nach dem Lesen Ihrer zusätzlichen Erklärung –

2

nur versuchen zu verstehen, was Sie tun. Sie haben ein Verzeichnis in Ihrer Quellstruktur, das Sie bekommen möchten? Eclipse-Plugins werden normalerweise im/plugins-Verzeichnis abgelegt. Das bedeutet, dass Sie entweder A) Ihre Ressourcen mit Ihrem Plugin mit build.properties bündeln müssen oder sie an einer anderen Stelle in der Dateistruktur ablegen und mit normalen File IO-Mechanismen darauf zugreifen müssen.

Wenn Sie ein Plugin erstellen Sie am ehesten statt

public void start(BundleContext context) { 
    Bundle bundle = context.getBundle(); 
    InputStream in = bundle.getEntry("/"+dirName").openStream(); 
}