2010-03-13 2 views
2

У меня есть исполняемый jar Client.jar, для которого требуется файл jndi.properties. Поскольку свойства jndi не являются частью Client.jar, а java -jar игнорирует аргумент -classpath,Проблема с classpath с java -jar

Как я могу выполнить банку и сообщить ей, где находится jndi.properties?

Благодаря

// Редактировать, сообщение об ошибке

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) 

ответ

2

Нам нужна дополнительная информация о том, как приложение сообщает местоположение файла свойств JNDI.

Ожидает ли местоположение файла свойств в качестве аргумента командной строки? Если да, то вы должны вызвать команду следующим образом:

java -jar <jarfile> <arguments> 

где <arguments> включить соответствующую опцию, дающую файл свойств JNDI.

Ожидает ли файл свойств JNDI как системное свойство? Если да, то вы должны вызвать команду следующим образом:

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

где <someproperty> это имя соответствующего свойства.

Ожидает ли поиска файла свойства на пути к классу? Если да, то вы должны вызвать команду что-то по следующим направлениям:

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

где <main-class> это имя основного класса из JAR файла манифеста, и <directory> содержит свойства JNDI файл с именем ожидаемого приложением.

Если приложение правильно задокументировано, предпочтительный способ настройки файла свойств JNDI будет содержаться в документации по установке и/или использованию.

+0

Ожидается, что файл jndi.properties будет указан в пути к классам. Я добавил ошибку, которую я получил в описании выше. – portoalet

+0

@portoalet - ошибка, которую вы включили, НЕ говорит, что jndi.properties * должны быть * на пути к классам! –

+0

Я закончил работу: java -Djava.naming.provider.url = jnp: // localhost: 1099 -Djava.naming.factory.initial = org.jnp.interfaces.NamingContextFactory com.don.Client По некоторым причинам jndi.properties просто не может быть загружен. – portoalet

1

Вы должны быть в состоянии вручную, обратитесь к основному классу и включают в себя все JARs на пути к классам, вместо использования -jar флаг.