私について:
私は新しいプログラマーで、Apache-Ant がどのように機能し、何をするのかよくわかりません。
ゴール:
javaconnector jcdb チュートリアルのサンプル プログラムを実行します。
プラットフォームの背景:
私のマシンはOSX 10.5.8 32ビットです
" which java" は、" /usr/bin/java" にリンクする " /System/Library/Frameworks/JavaVM.frameworks/Versions/A/Commands/java"を提供します
" which javac" は、" /usr/bin/javac" にリンクする " /System/Library/Frameworks/JavaVM.frameworks/Versions/A/Commands/javac"を提供します
" echo $JAVA_HOME" は空白行を与える
アプリケーション/ユーティリティの Java 設定アプリには、Java の 4 つのバージョンがリストされています: 1.6.0_26_b03-385 (64 ビット)、1.5.0_30-b03 (32 ビット)、1.5.0_30-b03 (64 ビット)、1.4.2_22 (32 ビット) . 現在、1.6.0 と 2 つの 1.5.0 バージョンがチェックされています。
注: 32 ビット OSX 10.5.8 用の Java 1.6 はありません。
私がしたこと:
まず、 connector/jをダウンロードして解凍し、 に移動し/usr/local/mysql-connector-java、README.txt セクション 3.1 および 3.2 に従ってインストールしました。CLASSPATH の変更も含まれます。既に mysql を使用しています
次に、バージョン 1.8.4 の ant バイナリディストリビューションを入手し、マニュアルに従ってインストールしました。特に、マニュアルには、apache ant が Java 1.5 で動作すると記載されています。" ant -version" は正しいバージョン 1.8.4 を返しました
次に、チュートリアル ファイルをダウンロードし、ファイルをディレクトリに解凍し、チュートリアルの指示に従ってファイルを変更build.xmlしました。properties/mysql-build-properties.xml
最後に、" " を使用してパッケージとサンプルをコンパイルし、" ant jar" を使用してデータベース、テーブル、および入力済みのテーブルを作成しましたant create-mysql_database。ant setup念のため" " も実行しました
チュートリアルによると、シェルをチュートリアル ディレクトリに配置して " ant <<sample_name>>" を実行すると、サンプルを実行できるはずです。そこで、チュートリアル「ant runct」で提案されたサンプルを実行してみました。
この手順の途中で、アプリケーション/ユーティリティの Java 設定で使用していた Java を変更したことはありません。以下で説明するように、1.5.0_30 と 1.6.0_26 の両方を使用して手順を試しました。
私の問題:
ant <<sample_name>>" " (たとえば " ") を実行した後ant runct、次のエラーが表示されます。
ビルドファイル: /Users/adam/Desktop/JDBCTutorial/build.xml
runct: [java] スレッド「メイン」での例外] java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) で [java] java.lang.ClassLoader.defineClass(ClassLoader.java:615) で [java] java.security.SecureClassLoader.defineClass(SecureClassLoader.java: 141) [java] at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) [java] at java.net.URLClassLoader.access$000(URLClassLoader.java:58) [java] at java.net.URLClassLoader$1. run(URLClassLoader.java:197) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:306) [java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [Java] Java 結果: 1
BUILD SUCCESSFUL 合計時間: 1 秒
自己修正の試み:
グーグルでわかる限り、チュートリアル用にダウンロードしたファイルが、ファイルの実行に使用しようとしているもの以外のJavaでコンパイルされた場所で実行しようとしているために、エラーが発生しました。そこで、バージョン1.6.0をリストの一番上に置き、Applications/Utilities/Java_Preferences「 」で使用されていることを確認しjava -version、上記の手順を実行して使用してみました。同じエラー。
また、チュートリアルを再解凍し、上記と同じように .xml ファイルを変更しようとしましたが、 の$JAVAと$JAVACプロパティmysql-sample-properties.xmlを のファイルを指すように変更しました。つまり、ファイルを指す/System/Library/Frameworks/JavaVM.framwork/Versions/1.5.0/Home/bin" " のファイルではなく、番号がわかっているバージョンです。/usr/binで/System/Library/Frameworks/JavaVM.framwork/Versions/A/Home/bin。ant jar次に、" "、" "、" ant create-mysql_database"を再実行しましたant setup。私が理解していることから、これは私が指定したコンパイラを使用して.javaファイルを再コンパイルする必要があります(正しいですか?)。ant runctしかし、" "を実行したときに同じエラーが発生しました。
また、 $JAVA と $JAVAC をmysql-sample-properties.xmlデフォルト ( i.e. /usr/bin/java and /usr/bin/javac) に再設定する場合と、リセットせずに次のことを試しました。$JAVA_HOME私は .profile をに設定し、上記のパスを返し、1.5.0_30 を返した/System/Library/Frameworks/JavaVM.framwork/Versions/1.5.0/Home実行によって正しい Java が使用されることをテストし、 " "、" "、および " "を再実行しました。" " を実行すると、同じエラーが発生しました。which javajava -versionant jarant create-mysql_databaseant setupant runct
注: チュートリアルの .java ファイルは、Java 1.6 で追加されたいくつかのオブジェクト/構文を使用しているようです。
重大な問題は、どの Java Ant が使用されているかわからないことです。
追加の質問:
usr/bin/java(c)「 」がバージョン「A」を指すのはなぜですか?
JavaバージョンAとは???
32 ビット マシンで 64 ビット Java を使用するにはどうすればよいですか? どういうわけか64ビットマシンをエミュレートしているだけですか?その場合、一部のタスクで 32 ビット バージョンよりも遅くなりますか?
64 ビット 1.5 Java を使用しているのはなぜですか?
ant が使用する Java コンパイラと Java はどれですか?
でリストの一番上にある Java を変更するとApplications/Utilties/Java_Preferences、"java -version" を実行することでマシンが正しいデフォルト Java を使用していることを確認でき、" " を実行することで使用されている Java のパスを確認できますwhich java。どの Java がリストの一番上にあるか、つまり使用されているかに関係なく、" " は " which java" を指します。usr/bin/javaこれは " " へのショートカット/System/Library/Frameworks/JavaVM.frameworks/Versions/A/Commands/javaです。Applications/Utilities/Java_Preferencesこれは、および " "に従って使用されている Java のバージョンに関係なく同じjava -versionです。同じディレクトリ/ファイルを指しているときに、異なるバージョンのJavaを使用しているマシンはどうですか??