0

以下のスクリプトを実行する必要があります

export CPATH="cpath=.:/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar"
/sail/lpp/IBM/Java/1.6.0/jre/bin/java \
    -classpath "$CPATH" com/ibm/md/waferchecks/ReadPasswordMain $1 $2 $3

スクリプトは 3 つの引数を受け入れます。しかし、コマンド プロンプトからスクリプトを実行すると、次のエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: com.ibm.md.wafercheck
s.ReadPasswordMain
Caused by: java.lang.ClassNotFoundException: com.ibm.md.waferchecks.ReadPassword
Main
        at java.net.URLClassLoader.findClass(URLClassLoader.java:421)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:652)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:346)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:618)
Could not find the main class: com/ibm/md/waferchecks/ReadPasswordMain.  Program
 will exit.

これは、クラスパス変数が正しく設定されていないという問題であることを理解しています。どこかで構文が間違っていると思います。誰でも助けてください。ありがとう

4

2 に答える 2

0
export CPATH=".:/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar" 

また、シェル変数を引用符で囲む必要はありません。

于 2012-07-24T07:11:47.303 に答える
0

export CPATH=割り当て行からを削除します。これにより、Javaは.cpath=.ではなく名前のファイルまたはディレクトリを検索するようになりました.

#! /bin/bash
jarfile=/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar
cpath=.:${jarfile?}

オプションexportの引数として$cpathを渡すので、は必要ありません。java -classpath


アンパッサンでは、Javaを呼び出す前にいくつかのチェックを実行して、次の行でいくつかの些細なエラーを排除できます。

(< ${jarfile?}) || exit # abort on missing or unreadable file[*]
  • ${path:?} パス変数が空または未定義の場合は中止します
  • ( < file ) || exit 読み取り用にファイルを開く機能に関する最小限のテストです。

(これは、bash、ksh93、およびzshの一般的なイディオムです。)


最終的なスクリプトは次のようになります。

#! /bin/bash
jarfile=/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar
cpath=.:${jarfile?}
(< ${jarfile?}) || exit

/sail/lpp/IBM/Java/1.6.0/jre/bin/java \
    -classpath "${cpath?}"  \
    com/ibm/md/waferchecks/ReadPasswordMain $1 $2 $3
于 2012-08-01T10:31:30.650 に答える