2010-03-13 6 views
2

J'ai un jar exécutable Client.jar qui nécessite le fichier jndi.properties. Puisque les propriétés jndi ne font pas partie de Client.jar, et java -jar ignore l'argument -classpath,Problème de classepath avec java -jar

Comment puis-je exécuter le fichier jar et lui indiquer où se trouve jndi.properties?

Merci

// Modifier, message d'erreur

java -jar Client2.jar 
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) 
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325) 
at javax.naming.InitialContext.lookup(InitialContext.java:392) 
at com.don.Client.main(Client.java:10) 

Répondre

2

Nous avons besoin de plus d'informations sur la manière dont l'application reçoit l'emplacement du fichier de propriétés JNDI.

Attend-il l'emplacement du fichier de propriétés en tant qu'argument de ligne de commande? Si oui, vous devez appeler la commande comme suit:

java -jar <jarfile> <arguments> 

où l'<arguments> incluent l'option appropriée donnant le fichier de propriétés JNDI.

Attend-il le fichier de propriétés JNDI en tant que propriété système? Si oui, vous devez appeler la commande comme suit:

java -jar <jarfile> -D<someproperty>=<location> 

où le <someproperty> est le nom de la propriété concernée.

Attend-il à trouver le fichier de propriétés sur le chemin de classe? Si oui, vous devez appeler la commande quelque chose le long des lignes suivantes:

java -cp <jarfile>:<directory> <main-class> 

<main-class> est le principal nom de la classe du manifeste de fichier JAR et <directory> contient les propriétés JNDI fichier avec le nom attendu par l'application.

Si l'application est correctement documentée, la manière préférée de configurer le fichier de propriétés JNDI se trouve dans la documentation d'installation et/ou d'utilisation.

+0

Il attend le fichier jndi.properties sur le chemin de classe. J'ai ajouté l'erreur que j'ai eu dans la description ci-dessus. – portoalet

+0

@portoalet - l'erreur que vous avez incluse ne dit PAS que jndi.properties * doit être * sur le classpath! –

+0

J'ai fini par faire: java -Djava.naming.provider.url = jnp: // localhost: 1099 -Djava.naming.factory.initial = org.jnp.interfaces.NamingContextFactory com.don.Client Pour certaines raisons jndi.properties ne peut pas être chargé. – portoalet

1

Vous devriez être en mesure de se référer manuellement à la classe principale et inclure tous les fichiers JAR sur le chemin de classe, au lieu d'utiliser le drapeau jar.