2012-11-15 57 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 
相关问题