私について:
私は新しいプログラマーで、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 java
java -version
ant jar
ant create-mysql_database
ant setup
ant 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を使用しているマシンはどうですか??