Javaプログラムを実行するためにBASHスクリプトを作成しようとしています(一般的な問題ですよね?)。それを完全に機能させることができません。何度も編集した後、次のようにします。クラスパスを設定してからプログラムを実行しようとしています。
Java -classpath 'cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive
/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar:
/cygdrive/c/Projects/common/lib/mysql-connector-Java-5.1.18-bin.jar:/cygdrive/c/Projects
/Freereader/bin/"' com.free.syndication.SQLfeeder
ごちゃごちゃしてすみません、私はただ一度にすべてをやろうとしています。プログラムのメインクラスが見つからないことがわかります!((
何か案は?
試してみてください:
Java -classpath `cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar;/cygdrive
/c/Projects/common/lib/jdom-1.0.jar;/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar;
/cygdrive/c/Projects/common/lib/mysql-connector-Java-5.1.18-bin.jar;/cygdrive/c/Projects
/Freereader/bin/"` com.free.syndication.SQLfeeder
$(command)
はバッククォート`command`
よりも明確です。cygpath
には-p
オプションがあり、WindowsとUnixの間で(単一のパス名ではなく)PATHのような値を変換します。つまりcygpath -pu 'C:\Users\me\bin;C:\Users\me\project\bin'
は/cygdrive/c/Users/me/bin:/cygdrive/c/Users/me/project/bin
を与えますcygpath -pw
は反対方向にも同じことをしますディレクトリ名はすでに目的の(Unix)構文になっているため、cygpath -u "/cygdrive/c"
(質問のように)は何も変更しないことに注意してください。省略してもかまいません。
したがって、コマンドは次のようになります。
CP="C:/Projects/common/lib/rome-1.0.jar;C:/Projects/common/lib/jdom-1.0.jar;C:/Projects/common/lib/jsoup-1.6.1.jar;
C:/Projects/common/lib/mysql-connector-Java-5.1.18-bin.jar;C:/Projects
/Freereader/bin"
# for a Windows Java binary:
Java -classpath "$(cygpath -pw "$CP")" com.free.syndication.SQLfeeder
# for a Unix Java binary:
Java -classpath "$(cygpath -pu "$CP")" com.free.syndication.SQLfeeder
または、Unixスタイルのクラスパスから開始することもできますが、コマンドは同じままです。いずれの場合も、クラスパスがすでに目的の構文になっている場合は、もちろんcygpathの呼び出しを省略できます。
バックティックは必要ありませんか?
Java -classpath `cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive
/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar:
/cygdrive/c/Projects/common/lib/mysql-connector-Java-5.1.18-bin.jar:/cygdrive/c/Projects
/Freereader/bin/"` com.free.syndication.SQLfeeder
そしてついに---(グーグルの最初のリンク あなたの質問に答えます
この問題の主な原因は、バックティックではなく、コロンとセミコロンの問題です。 cygwinでは、Javaが実行されているため、DOS/Windows環境では、パス区切り文字として「;」が必要です。
Backticは役に立ちますが、問題の主な根本原因は「:」と「;」の違いを強調する必要があります。 JavaがUnixまたはWindows環境にある場合。