2

Javaプログラムを作りました。私はEclipseを使用しましたが、これはmavenプロジェクトです。Windowsコマンドプロンプトからプログラムを実行すると、正常に実行されます。ここで、Windowsコマンドプロンプトから実行する方法

D:\Personal Work\eclipse 32 Bit\workspace\....\target\classes>
java -cp ".;..\dependency-jars\*"  com/softech/ls360/integration/BatchImport vintners

正常に動作しています。私の依存関係のjarフォルダーには、これらのjarファイルが含まれています

依存関係-jar

今、Linuxから同じプログラムを実行すると. ここで私はそれをどのように実行していますか

root@Basit:/home/test/script/classes# java -cp .;../dependency-jars/*;  com.s
oftech.ls360.integration.BatchImport vintners

次に、エラーが発生します

....
-javaagent:<jarpath>[=<options>]
              load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
              show splash screen with specified image
../dependency-jars/commons-collections-3.2.1.jar: line 1: PK??: command not found
../dependency-jars/commons-collections-3.2.1.jar: line 2:
../dependency-jars/commons-collections-3.2.1.jar: line 2: ?8: command not found
../dependency-jars/commons-collections-3.2.1.jar: line 3: syntax error near unex
pected token `)'
../dependency-jars/commons-collections-3.2.1.jar: line 3: ?     ¶META-INF/MANIFE
ST.MF?VKo
     _¦?z?  ?%+v?N??!ö!P@
                         (
                          _?o.5?$
com.softech.ls360.integration.BatchImport: command not found

これらのエラーが発生する理由。どうすればLinuxで実行できますか? 助けてください

ありがとう

4

4 に答える 4

3

Linux 環境ではクラスパス:の代わりに使用する必要があります。;jar が適切に配置されていると仮定して、これを変更するだけです。

java -cp .;../dependency-jars/*;  com.s
oftech.ls360.integration.BatchImport vintners

java -cp .:../dependency-jars/*:  com.s
oftech.ls360.integration.BatchImport vintners

動作するはずです

クラスパスの設定について詳しくは、http: //docs.oracle.com/javase/tutorial/essential/environment/paths.htmlをご覧ください。

于 2013-08-15T12:35:16.643 に答える
2

セミコロンは、クラスパスなしで Bash に java コマンドを呼び出させ、次に各 jar を直接実行しようとし、存在しないシバンを探します。これにより、JAR ヘッダーがエラーの一部として出力されます。

:Linux でセミコロンの代わりに jar を区切るために使用します。

于 2013-08-15T12:35:47.357 に答える
0

次の 2 つの変更を行う必要があります。

  1. まず、クラスパスの区切り記号は「;」ではなく「:」です。Linux の場合
  2. 次に、ワイルドカード文字をバックスラッシュ ('\') でエスケープする必要があります。そうしないと、シェルがワイルドカード文字を展開して混乱させてしまいます。Java に「*」文字を認識させ、それ自体を展開させます。Windows シェルはコマンド ラインでワイルドカードを展開しないため、これは問題になりません。

したがって、一緒に、次のようなものを使用したいと思うでしょう

java -cp .:../dependency-jars/\*:  com.softech.ls360.integration.BatchImport vintners
于 2013-08-15T12:38:14.680 に答える
0

; の代わりに : を使用する必要があります。クラスパスファイルのスペレーターとして。

于 2013-08-15T12:38:21.670 に答える