关于我:
我是一个新程序员,不太确定 Apache-Ant 的工作原理以及它的作用
目标:
平台背景:
我的机器是 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
" 给出一个空行
Applications/Utilities 中的 Java Preferences 应用列出了 Java 的四个版本: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 和两个 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
”为了好
根据教程,我现在应该能够通过将我的 shell 放在教程目录并运行 " 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] 线程“main”中的异常 java.lang.UnsupportedClassVersionError:com/oracle/tutorial/jdbc/JDBCTutorialUtilities:在 java.lang.ClassLoader.defineClass1(本机方法)[java] 中不受支持的 major.minor 版本 51.0 [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] 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:283) [java] 在 java.net.URLClassLoader.access$000(URLClassLoader.java:58) [java] 在 java.net.URLClassLoader$1。在 java.security.AccessController.doPrivileged(Native Method) [java] 在 java.net.URLClassLoader 运行(URLClassLoader.java:197)[java]。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
构建成功总时间:1秒
我的自我纠正尝试:
据我从谷歌搜索得知,出现错误是因为我为教程下载并尝试运行的文件是使用 java 编译的,而不是我试图用来运行文件的 java。因此,我尝试使用 1.6.0 版本,将其放在列表顶部Applications/Utilities/Java_Preferences
,并使用“”确认它正在使用java -version
,然后执行上述过程。同样的错误。
我还尝试重新解压缩教程并修改与上述相同的 .xml 文件,但将$JAVA
and$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 -version
”使用哪个版本的Java,这都是相同的;机器在指向同一个目录/文件时如何使用不同版本的 Java?