Ошибка пути к классам с помощью java -jar - PullRequest
2 голосов
/ 13 марта 2010

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

Как мне выполнить 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 ]

2 голосов
/ 13 марта 2010

Нам нужна дополнительная информация о том, как приложению сообщается расположение файла свойств 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 будет в документации по установке и / или использованию.

1 голос
/ 13 марта 2010

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

...