java -jar的类路径问题

时间:2010-03-13 02:47:19

标签: java jar executable-jar

我有一个需要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)

2 个答案:

答案 0 :(得分: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属性文件的首选方法将在安装和/或使用文档中。

答案 1 :(得分:1)

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