从位于网络服务器上运行java程序。

时间:2012-11-15 16:24:32

标签: java networking network-programming classpath

我有一个使用以下命令运行的java应用程序:

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

myapp.jar位于具有以下文件和结构的文件夹中

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

myapp.bat包含上面的run命令,所以当你双击它时,它会运行程序。如果我将文件夹复制到本地路径,一切正常。例如,如果文件夹在 c:\program\myapps\demo我可以进入该文件夹并双击myapp.bat脚本,程序启动。

我现在遇到的问题是我想将demo文件夹复制到网络上的路径。我通过将其复制到\\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\映射到本地驱动器号来尝试不同的方法 工作正常没有任何问题。如果我使用完整的网络路径来访问该文件夹,它只能工作。有没有什么方法可以让它无需映射网络路径就可以工作?

2 个答案:

答案 0 :(得分:1)

改为使用。 (对于当前目录)。将它分配给变量并使用整个路径限定jar以运行它。

设置MY_JAR_PATH = \ London-server01 \ applications \ client \ demo \

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

这可能会有所帮助!

答案 1 :(得分:1)

尝试这样,这是我运行我的应用程序的方式。与你的不同。

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