我有一个需要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)
答案 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标志。