2015-06-05 9 views
5

I gegeben, um eine Ressource für ein Modul wie folgt:Netbeans Plattform: InstalledFileLocator

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>nbm-maven-plugin</artifactId> 
    <extensions>true</extensions> 
    <configuration> 
     <moduleType>eager</moduleType> 
     <nbmResources>      
      <nbmResource> 
       <directory>${basedir}/resources</directory> 
       <targetPath>resources</targetPath> 
       <includes> 
        <include>*.db</include> 
       </includes> 
       <excludes> 
        <exclude>*trace*</exclude> 
       </excludes> 
      </nbmResource> 
     </nbmResources> 
    </configuration> 
</plugin> 

Die Datei im Netbeans Anwendung zeigt an: target/app name/app name/resources/card_manager.mv.db. Das sieht gut aus.

Jetzt versuche ich, diese Datei Standort zu erhalten, wie folgt:

File db = InstalledFileLocator.getDefault().locate("card_manager.mv.db", 
        "module.codename.base", false); 

Aber db ist immer null. Irgendeine Idee?

Antwort

0

Versuchen Sie diesen Code ...

File file = InstalledFileLocator.getDefault().locate("myfile", null, false); 
if (file == null) 
{ 
    file = new File(Places.getUserDirectory() + File. separator + "myfile"); 
} 

Oder haben Sie Ressourcen/card_manager.mv.db versucht? Ich bin sicher, dass der Anwendungspfad (App-Name) und Clustername (zweiter App-Name) von locate() ausgeschlossen ist, aber ich glaube, dass Sie Ressourcen/Pfad einschließen müssen.

+0

Will es versuchen und melden Sie sich zurück. – javydreamercsw

+0

Hat nicht funktioniert, aber ich weiß, dass ich es schaffen kann, den Speicherort der Ressource zu ändern, usw., aber ist nicht das, was ich will. Ich muss InstalledFileLocator verwenden, da verschiedene Module möglicherweise ihre eigene Version dieser Datei haben und ich sie nach codenamebase suchen muss. – javydreamercsw

+0

Auch wenn das Kopfgeld abläuft, würde ich eine gute Antwort geben Kopfgeldpunkte. – javydreamercsw

0

Ändern Sie Ihre Pom, so dass die card_manager.mv.db in den Ordner Klassen statt den Ordner Ressourcen kopiert und holen Sie die Datei von Ihrem Classloader.

+0

Ich weiß, dass ich es schaffen kann, den Speicherort der Ressource zu ändern, etc., aber nicht das, was ich will. Ich muss InstalledFileLocator verwenden, da verschiedene Module möglicherweise ihre eigene Version dieser Datei haben und ich sie nach codenamebase suchen muss. – javydreamercsw

+0

Auch wenn das Kopfgeld abläuft, würde ich eine gute Antwort geben Kopfgeldpunkte. – javydreamercsw