このコマンドがWindowsで正常に機能する理由は誰にもわかりますが、LinuxではClassNotFoundException game.ui.Mainが表示されます
Java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m
私のフォルダ構造は次のようになります:lib /-Jars game /-クラスファイル
これは最新のJava 6。
クラスパスの構文はOSに依存します。 Wikipedia から:
ファイルシステムと密接に関連しているため、コマンドラインのクラスパス構文はオペレーティングシステムに依存します。例えば:
すべてのUnixライクなオペレーティングシステム(LinuxやMac OS Xなど)では、ディレクトリ構造はUnix構文を持ち、コロン( ":")で区切られた個別のファイルパスを持ちます。
windowsでは、ディレクトリ構造にはWindows構文があり、各ファイルパスはセミコロン( ";")で区切る必要があります。
マニフェストファイルでクラスパスが定義されている場合、オペレーティングシステムに関係なく、各ファイルパスをスペース( "")で区切る必要がある場合、これは適用されません。
セミコロンをコロンに変更してみてください。
CLASSPATH区切り文字はプラットフォームに依存し、 Java.io.File.pathSeparatorChar によって返される文字と同じです。
Windows(つまりcygwin)とLinuxの両方のプラットフォームで実行することを意図したスクリプトでクラスパスを使用する場合、パスも重要です。これを行うとき、クラスパスにこのような関数を含めます。 「-w」オプションを指定した「cygpath」コマンドは、パスをWindowsスタイルのパスに変換します。したがって、この例では「/home/user/lib/this.jar」は「C:\ Cygwin\home\user\lib\this.jar」のようなものに変換されます
#!/bin/bash
function add_Java_classpath() {
local LOCAL1=$1
if [ "$OSTYPE" == cygwin ]; then
LOCAL1="$(cygpath -C ANSI -w $LOCAL1)"
fi
if [ -z "$Java_CLASSPATH" ]; then
Java_CLASSPATH="$LOCAL1"
Elif [ "$OSTYPE" != cygwin ]; then
Java_CLASSPATH="${Java_CLASSPATH}:$LOCAL1"
else
Java_CLASSPATH="${Java_CLASSPATH};$LOCAL1"
fi
}
add_Java_classpath /home/user/lib/this.jar
add_Java_classpath /usr/local/lib/that/that.jar
Java -cp "${Java_CLASSPATH}" package.Main $@
Windows:
Java -cp file.jar;dir/* my.app.ClassName
Linux:
Java -cp file.jar:dir/* my.app.ClassName
リマインド:
;
: