2

我有一个需要 jndi.properties 文件的可执行 jar Client.jar。由于 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)
4

2 回答 2

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 属性文件的首选方式将是在安装和/或使用文档中。

于 2010-03-13T03:12:52.080 回答
1

您应该能够手动引用主类并在类路径中包含所有 JAR,而不是使用 -jar 标志。

于 2010-03-13T02:49:15.947 回答