2012-11-15 51 views
0

我有一個使用下面的命令來運行Java應用程序:運行位於網絡服務器上的Java程序。

java -cp .;lib\*;myapp.jar com.app.myapp.MyAppStart 

的myapp.jar是具有下列文件和結構

/demo 
    /lib 
    /conf 
    myapp.jar 
    myapp.bat 

的myapp.bat包含的文件夾中上面的運行命令,所以當你雙擊它時,它會運行程序。一切工作正常,如果我將文件夾複製到本地路徑。例如,如果該文件夾在 c:\program\myapps\demo我可以進入該文件夾並雙擊myapp.bat腳本,程序啓動。

我現在的問題是我想複製演示文件夾到網絡上的路徑。我測試了它通過將其複製到\\London-server01\applications\client\demo\但引發以下異常

Exception in thread "main" java.lang.NoClassDefFoundError: com/app.myapp/MyAppStart 
Caused by: java.lang.ClassNotFoundException: com.app.myapp.MyAppStart 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: com.app.myapp.MyAppStart. Program will exit. 

它看起來像它不喜歡該程序從網絡驅動器上運行的事實。我嘗試了一種不同的方法,將\\London-server01\applications\client\demo\映射到本地驅動器號,並且 正常工作沒有任何問題。如果我使用完整的網絡路徑來訪問文件夾,它只會失敗。有沒有什麼辦法可以讓它工作而不需要映射網絡路徑?

回答

1

改爲使用。 (用於當前目錄)。將其分配給一個變量並使用整個路徑限定該jar來運行它。

集MY_JAR_PATH = \倫敦SERVER01 \應用程序\客戶端\演示\

java命令%MY_JAR_PATH%; LIB *;%MY_JAR_PATH%\ myapp.jar com.app.myapp.MyAppStart

這可能有幫助!

+0

謝謝 - 使用變量我現在可以運行應用程序。唯一的問題是它沒有找到'conf'文件夾。它位於同一個文件夾中,並且在應用程序中被硬編碼爲'conf/application.properties'。 – ziggy

1

像這樣嘗試,這是我運行我的應用程序的方式。有點不同於你的。

java -cp "myapp.jar;lib/*" com.app.myapp.MyAppStart 
相關問題