0

次のコマンドを使用して実行される 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\、問題なく正常に動作します。完全なネットワーク パスを使用してフォルダーにアクセスする場合にのみ機能しません。ネットワーク パスをマップする必要なく動作させる方法はありますか?

4

2 に答える 2

1

このようにしてみてください、これは私が私のアプリケーションを実行する方法です。あなたのものとは少し異なります。

java -cp "myapp.jar;lib/*" com.app.myapp.MyAppStart
于 2012-11-15T16:39:08.293 に答える
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

これは役立つかもしれません!

于 2012-11-15T16:30:34.403 に答える