12

この質問は以前に何度も聞かれたことは知っていますが、グーグルで検索して例を見て、先月のSOに関する質問を見ましたが、真剣にこれを機能させることができません. 問題は、Eclipse とコマンド ラインの両方からプログラムを実行できるようにしたいことだと思います。私は OSX も使用しており、私が読んでいる例の多くは Windows/Linux 用のものだと思います。

コマンドラインから実行したいEclipseでコンパイルされた単純なプログラムがある場合、次のようにします。

java -cp bin MyProgram

コンパイルして Eclipse で実行する別のプログラムがあり、これは同じディレクトリに格納されている MySQL JDBC コネクタ (mysql-connector-java-5.1.19-bin.jar) を参照します。これは Eclipse からは問題なく動作しますが、コマンド ラインからは実行できません。

私は物事のすべての組み合わせを試しました...

java -classpath "bin;mysql-connector-java-5.1.19-bin.jar" MyProgram
java -cp bin\;mysql-connector-java-5.1.19-bin.jar MyProgram

あらゆる種類のクラスが見つからないエラーを取得します...

Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram
Caused by: java.lang.ClassNotFoundException: MyProgram
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
4

5 に答える 5

14

あなたの問題は、使用している最小セパレータです。セパレーター;はウィンドウ用です。Unix システムでは、:代わりに次を使用する必要があります。

java -classpath "bin:mysql-connector-java-5.1.19-bin.jar" MyProgram

于 2012-04-30T14:15:43.957 に答える
5

Unix システムでは、「:」を使用してエントリを区切ります。

java -classpath "bin:mysql-connector-java-5.1.19-bin.jar" MyProgram
java -cp bin:mysql-connector-java-5.1.19-bin.jar MyProgram

Eclipse が自動的に変換します。

于 2012-04-30T14:15:38.510 に答える
1

見る:

String pathSeparator = System.getProperty("path.separator");
于 2012-04-30T14:17:53.827 に答える
0

クラスパスにメイン クラスを設定していません。-cp を追加./してみてください

于 2012-04-30T14:15:21.673 に答える
-2

--jar または -jar を試すことを強くお勧めします。どれだったか覚えていませんが、それで解決するはずです。また、Apple の開発ツールがある場合は、jar パッケージャーがあります。

于 2012-04-30T14:16:58.620 に答える