关于我:
我是一名新手程序员,并不确定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二进制distribution并根据manual安装了它。值得注意的是,手册中指出apache ant适用于Java 1.5。 " ant -version
"返回正确的版本,1.8.4
然后我下载了tutorial files,将文件解压缩到一个目录中,并根据tutorial's instructions修改了build.xml
和properties/mysql-build-properties.xml
文件。
最后,我使用" ant jar
"编写了包和样本,并使用" ant create-mysql_database
"创建了数据库,表格和填充表格。我也跑了" ant setup
"为了良好的测量
根据教程,我现在应该能够通过将我的shell放在教程目录并运行&#34; ant <<sample_name>>
&#34;来运行示例。 。因此,我尝试运行教程建议的示例,&#34; ant runct
&#34;。
在这个过程的中间,我从来没有改变过我在Application / Utilities的Java Preferences中使用的Java;我确实尝试了使用1.5.0_30和1.6.0_26的程序,如下所述
我的问题:
运行&#34; ant <<sample_name>>
&#34; (例如&#34; ant runct
&#34;),我收到以下错误:
Buildfile:/Users/adam/Desktop/JDBCTutorial/build.xml
runct: [java]线程中的异常&#34; main&#34;因为java.lang.UnsupportedClassVersionError: com / oracle / tutorial / jdbc / JDBCTutorialUtilities:不支持 major.minor版本51.0 [java] at java.lang.ClassLoader.defineClass1(Native Method) [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] java.security.AccessController.doPrivileged(Native Method) [java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) [java] java.lang.ClassLoader.loadClass(ClassLoader.java:306) [java] at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301) [java] java.lang.ClassLoader.loadClass(ClassLoader.java:247) [java] Java结果:1
建立成功总时间:1秒
我尝试自我纠正:
据我在google搜索中可以看出,错误已经出现,因为我为本教程下载的文件正在尝试运行,而不是我试图用来运行文件的java以外的java编译。因此,我尝试使用1.6.0版本,将其放在Applications/Utilities/Java_Preferences
列表的顶部,并使用&#34; java -version
&#34;确认它正在使用,然后执行上述程序。同样的错误。
我还尝试重新解压缩教程并修改与上述相同的.xml文件,但更改了$JAVA
中的$JAVAC
和mysql-sample-properties.xml
属性以指向{{1}中的文件我所知道的版本,而不是&#34; /System/Library/Frameworks/JavaVM.framwork/Versions/1.5.0/Home/bin
&#34;中的文件,它指向/usr/bin
中的文件。然后我重新开始了#34; /System/Library/Frameworks/JavaVM.framwork/Versions/A/Home/bin
&#34;,&#34; ant jar
&#34;和&#34; ant create-mysql_database
&#34 ;;根据我的理解,这应该使用我指定的编译器重新编译.java文件(正确吗?)。但是,当我运行&#34; ant setup
&#34;
我还尝试了以下方法,将{JAVA和$ JAVAC在ant runct
中重新设置为默认值(mysql-sample-properties.xml
),并且不重置。我在我的.profile中将i.e. /usr/bin/java and /usr/bin/javac
设置为$JAVA_HOME
,通过运行返回上述路径的/System/Library/Frameworks/JavaVM.framwork/Versions/1.5.0/Home
和返回1.5.0_30的which java
来测试正确的java,并重新使用-ran&#34; java -version
&#34;,&#34; ant jar
&#34;和&#34; ant create-mysql_database
&#34;。当我跑#34; ant setup
&#34;我得到了同样的错误。
注意:教程中的.java文件似乎使用Java 1.6中添加的一些对象/语法
一个重要的问题是我不知道哪个Java Ant正在使用。
其他问题:
为什么&#34; ant runct
&#34;指向版本&#34; A&#34;?
什么是Java版本A ???
如何在32位计算机上安装64位Java?它只是以某种方式模拟64位机器吗?如果是这样,某些任务的运行速度是否比32位版本慢?
为什么我有64位1.5 Java?
哪个Java编译器和Java可以使用?
当我在usr/bin/java(c)
中更改哪个Java位于列表顶部时,我可以通过执行&#34; java -version&#34;来确认机器正在使用正确的默认Java,并且可以检查通过做&#34; Applications/Utilties/Java_Preferences
&#34;来使用Java的路径。无论哪个Java位于列表顶部即使用,&#34; which java
&#34;指向&#34; which java
&#34;,这是&#34; usr/bin/java
&#34;的快捷方式;无论根据/System/Library/Frameworks/JavaVM.frameworks/Versions/A/Commands/java
和&#34; Applications/Utilities/Java_Preferences
&#34;使用哪个版本的Java,都是一样的。如何在指向同一目录/文件时使用不同版本的Java?
答案 0 :(得分:0)
来自ant manual:
Environment Variables
The wrapper scripts use the following environment variables (if set):
JAVACMD - full path of the Java executable. Use this to invoke a different JVM than JAVA_HOME/bin/java(.exe).
因此,您应该将JAVA_HOME
设置为正确的Java&gt; 1.5 JDK。但是我不清楚当前使用哪一个Ant,因为你的JAVA_HOME
没有设置。如果您使用的是32位系统,则应该卸载64位版本的Java。我认为它们无法工作。
我不是OSX专家,所以我也对java
可执行文件的完整路径感到困扰,通常它应该在bin
文件夹中,其父项是您应该为其设置的文件夹JAVA_HOME
环境变量(如Ant手册中所述)。您可以使用find -name java -perm +x
在系统上搜索java可执行文件,也许您可以通过这种方式找到干净的java安装。
否则,您的解决方案之一是从oracle网站下载JDK,将其解压缩到/opt/java_xxx
这样的文件夹中,并将其用作JAVA_HOME
。这就是我在我的系统上并行实现的java 6和7。