0

Apache CLI ライブラリを使用して、実行可能な jar ファイルを作成しました。プログラムをEclipseで開発しましたが、問題なく動作します。ただし、これを UNIX (solaris) 環境で実行する必要があり、何も機能していないようです。これが私が使用するコマンドです

   java -cp "$cPath" ./QueryHandler.jar "-i /home/xyzsd/java/QueryHandler/config/sybQuery.sql" "-U xxxxx" "-P xxxxxx,/" "-S Sybase" "-N xxxxxxx" "-s ##BusDate##=20150731" "-o /home/ertrgb/java/QueryHandler/config/output.xlsx"

$cPath には、必要なすべての jar へのパスがあります。

    export CLASSPATH=./:/usr/cvcv/fefef/wfvwerv/fefe/fwefwev/vswvrbvrb.jar:/usr
/cwvewv/dweqdecew/wevrrbrtb/wvvrtbtbb/cwweregrb.jar

  cliPath=$invinvnrv/cli/1.3.1/*
jsonPath=$nrunvunrvunr/json/1.1.1/*
poiPath=$ivcnurnvrnvb/poi/3.10.1/*

    cPath=$CLASSPATH:$cliPath:$jsonPath:$poiPath

これを実行しようとすると、Apache CLI の JAR が見つからないというエラーが表示されます。だから、ここに私の質問があります

UNIX で CLI を実装しようとすると、正しい構文がありますか?

必要な JAR へのパスを正しく設定しましたか?

お知らせ下さい。

編集

わかりましたので、ここに私が試したものがあります。jarのメインクラスを次のように実行しました

java -cp $cPath MainHandler -i /home/xyzsd/java/QueryHandler/config/sybQuery.sql -U xxxxx -P xxxxxx,/ -S Sybase -N xxxxxxx -s '##BusDate##=20150731' -o /home/ertrgb/java/QueryHandler/config/output.xlsx

そしてこれはうまくいきます!ただし、すべてのファイルをjarして実行しようとすると

java -cp $cPath -jar QueryHandler.jar -i /home/xyzsd/java/QueryHandler/config/sybQuery.sql -U xxxxx -P xxxxxx,/ -S Sybase -N xxxxxxx -s '##BusDate##=20150731' -o /home/ertrgb/java/QueryHandler/config/output.xlsx

これは例外をスローします

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
        at java.lang.Class.getMethod0(Class.java:2774)
        at java.lang.Class.getMethod(Class.java:1663)
        at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 6 more

基本的に、それは私が推測するcli jarを見つけることができません。また、作成したjarファイルに必要なすべてのライブラリを含めようとしましたが、それでも同じエラーが発生します。

お知らせ下さい。

編集2

別の更新。

これは動作します

java -cp $cPath:QueryHandler.jar MainHandler -i /home/xyzsd/java/QueryHandler/config/sybQuery.sql -U xxxxx -P xxxxxx,/ -S Sybase -N xxxxxxx -s '##BusDate##=20150731' -o /home/ertrgb/java/QueryHandler/config/output.xlsx

しかし、メインクラスの名前を提供したくありません。私はすでにマニフェストファイルでそれを定義しています。

お知らせ下さい。

4

0 に答える 0