【问题标题】:Running a java program from located on a network server.从位于网络服务器上运行 java 程序。
【发布时间】:2012-11-15 16:24:32
【问题描述】:

我有一个使用以下命令运行的 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\ 映射到本地驱动器号,然后 工作正常,没有任何问题。如果我使用完整的网络路径来访问文件夹,它只会失败。有什么方法可以让它工作而不需要映射网络路径?

【问题讨论】:

    标签: java networking network-programming classpath


    【解决方案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

    这可能会有所帮助!

    【讨论】:

    • 谢谢 - 使用变量我现在可以运行应用程序。唯一的问题是它没有找到“conf”文件夹。它在同一个文件夹中,并且在应用程序中硬编码为“conf/application.properties”。
    【解决方案2】:

    试试这样,这就是我运行我的应用程序的方式。和你的有点不同。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多