2010-03-13 215 views
2

我有一個需要jndi.properties文件的可執行jar Client.jar。 因爲jndi屬性不是Client.jar的一部分,並且java -jar忽略-classpath參數,所以我怎樣才能執行該jar並讓它知道jndi.properties的位置?java -jar類路徑問題

感謝

//編輯,錯誤信息

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

它期望classpath上的jndi.properties文件。我在上面的描述中添加了錯誤。 – portoalet 2010-03-13 03:18:28

+0

@portoalet - 你所包含的錯誤並不是說jndi.properties *必須在類路徑上*。 – 2010-03-13 03:25:25

+0

我落得這樣做: 的Java -Djava.naming.provider.url = JNP://本地主機:1099 -Djava.naming.factory.initial = org.jnp.interfaces.NamingContextFactory com.don.Client 對於一些原因jndi.properties不能被加載。 – portoalet 2010-03-13 04:14:16

1

你應該能夠手動指的是主類,包括在類路徑中的所有JAR文件,而不是使用的罐子標誌。