2009-01-22 14 views
4

J'ai un projet qui utilise le port série, et il a besoin de deux fichiers à exécuter, le fichier Win32.dll (qui est dans le dossier bin de l'environnement d'exécution Java) et le fichier javax.comm.properties (qui est dans la java dossier lib de l'environnement d'exécution). Quand je lance le projet depuis eclipse, cela fonctionne, mais quand j'essaye de construire un fichier jar pour la distribution, ça ne marchera pas. Je suppose que c'est parce que les fichiers dll et les propriétés ne sont pas inclus dans le pot. Comment puis-je spécifier qu'ils doivent être là?Comment attacher des fichiers de propriétés à un pot?

Répondre

3

Vous ne placez généralement pas de fichiers dll et de propriétés dans le pot. Les fichiers de propriétés ainsi que les autres fichiers jar doivent être ajoutés au classpath. Le fichier jar a un fichier manifeste qui définit le chemin de classe utilisé. Vous ne pouvez pas l'éditer avec eclipse. Vous devez définir un fichier build.xml ant et de faire quelque chose comme ceci:

<jar jarfile="${dist}/MyJar.jar" basedir="${build}"> 
    <manifest> 
    <attribute name="Main-Class" value="MyClass"/> 
    <attribute name="Class-Path" value="."/> 
    </manifest> 
</jar> 

Ensuite, placez le fichier de propriétés dans le même dossier que le pot. Vous pouvez exécuter la cible Ant en cliquant avec le bouton droit sur le fichier build.xml et en sélectionnant la commande "Exécuter en tant que cible Ant". Si je me souviens bien, placer le fichier dll dans le répertoire bin du jre fonctionnera.

+1

"Le fichier jar contient un fichier manifeste qui définit le chemin de classe utilisé, mais vous ne pouvez pas le modifier avec eclipse." >> Bien sûr que vous pouvez! Créez simplement les vôtres et pointez l'export Export> Jar-wizard dans la fenêtre Jar Manifest Specification. – Tim

0

Un fichier jar est juste un fichier zip normal. Si vous voulez ajouter des fichiers, utilisez simplement un outil tel que winzip.

+0

Oui, mais l'application java utiliser le fichier? – Marius

2

Je pense javax.comm.properties juste besoin d'être sur votre chemin de classe. Vous pouvez l'ajouter au niveau supérieur d'un pot que vous avez livré.

InputStream est = MainClass.class.getResourceAsStream ("javax.comm.properties"); if (null == est) {....} propriétés manquantes

Je pense Win32.dll juste besoin d'être sur le% PATH% (fenêtres) ou LD_LIBRARY_PATH $ (unix) ......

+0

Ou définissez -Djava.library.path =/path/to/win32.dll sur la ligne de commande (ce qui n'est pas toujours une option). –

0

Avec Ant, vous pouvez emballer tout dans votre pot que vous voulez. Laissez donc Ant créer votre Jar, pas Eclipse :)