2010-10-01 12 views
0

J'ai une application qui a des bibliothèques tierces qui nécessitent l'existence de fichiers de configuration. Je les mets dans des fichiers jar afin qu'ils puissent être déployés en utilisant JWS. Je sais que vous pouvez lire les fichiers du fichier jar en utilisant getResourceAsStream(), mais les bibliothèques tierces ne le font pas. J'ai essayé de les lire hors du pot avec getResourceAsStream et écrire les fichiers réels à user.dir. L'application fonctionne bien de cette façon. Cependant, il semble que la plupart des utilisateurs lancent l'application à partir d'un raccourci sur le deskop, donc bien sûr leur user.dir est le bureau. Ils préfèrent ne pas gaspiller leur bureau avec des fichiers de configuration.Lecture de fichiers dans Java Web Start

Y a-t-il une meilleure façon de gérer cela?

Répondre

0

Vous pouvez réellement changer votre user.dir. Je pense que c'est "intouchable" au début.

Alors d'abord vous devez faire « touchable »

Nous invoquons les éléments suivants à l'aide d'un bloc statique pour notre classe MainWindow

static { 
    try { 
    Class clazz = ClassLoader.class; 
    Field field = clazz.getDeclaredField("sys_paths"); 
    boolean accessible = field.isAccessible(); 
    if (!accessible) { 
     field.setAccessible(true); 
    } 
    field.set(clazz, null); 
    try { 
     String currentDir = System.getProperty("java.library.path"); 
     //now remove the current directory from the library path. 
     String sansCurrentDir = removeCurrentDirectoryFromPath(currentDir); 
     System.setProperty("java.library.path", sansCurrentDir); 
    } 
    finally { 
     field.setAccessible(accessible); 
    } 
} catch (Exception e) { 
    //in our case we rethrow 
} 
} 


//and then later in our code in the same static block we can now create our root directory (ie, the user.dir) and execute 
System.setProperty("user.dir", rootDirectory);