2012-07-21 106 views
3

關於我:錯誤JDBC運行教程樣本:UnsupportedClassVersionError

我是一個較新的程序員,真的不知道它是如何Apache的螞蟻可行,什麼不可行


目標:

運行在javaconnector jcdb tutorial

示例程序

平臺背景:

我的機器是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的四個版本: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版本。

注:沒有Java 1.6的32位OSX 10.5.8


我所做的:

首先我下載解壓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 instructionsbuild.xmlproperties/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」)後,我收到以下錯誤:

Buildfile: /Users/adam/Desktop/JDBCTutorial/build.xml

runct: [java] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/oracle/tutorial/jdbc/JDBCTutorialUtilities : Unsupported major.minor version 51.0 [java] at java.lang.ClassLoader.defineClass1(Native Method) [java] at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) [java] at java.lang.ClassLoader.defineClass(ClassLoader.java:615) [java] at 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 Result: 1

BUILD SUCCESSFUL Total time: 1 second


我的自我矯正嘗試:

據我可以告訴從谷歌搜索,錯誤已經出現,因爲我下載的教程,並試圖運行的地方編譯與我試圖用來運行文件的Java編譯的文件。因此,我試着使用1.6.0版本,將它放在Applications/Utilities/Java_Preferences的列表頂部,並使用「java -version」確認它正在使用,然後執行上述過程。同樣的錯誤。

我也試過重新解壓教程和修改.xml文件和上面一樣,但在mysql-sample-properties.xml改變了$JAVA$JAVAC性質的文件/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),且無需重新設置。我在.profile文件設置$JAVA_HOME/System/Library/Frameworks/JavaVM.framwork/Versions/1.5.0/Home,測試的正確使用Java運行which java其返回上面的路徑和java -version其返回1.5.0_30,並重新運行「ant jar」,「ant create-mysql_database」和「ant setup」。當我運行「ant runct」時,我得到了同樣的錯誤。

注:本教程中的.java文件似乎可以在Java 1.6

一個顯著的問題是我不知道哪個Java螞蟻是用添加了一些對象/語法。


其他問題:

爲什麼 「usr/bin/java(c)」 點 「A」 型?

什麼是Java版本A ???

如何在我的32位機器上安裝64位Java?它只是模擬一個64位機器?如果是這樣,對於某些任務,它的運行速度是否低於32位版本?

爲什麼我有64位1.5 Java?

哪個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,同時指向相同的目錄/文件?

回答

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> 1.5 JDK。但是由於你的JAVA_HOME未設置,所以目前我不清楚哪一個Ant正在使用。你應該卸載64位版本的Java,如果你在32位系統上,我認爲他們不能工作。

我不是OSX專家,所以我也通過你的java可執行文件的完整路徑的困擾,通常應該是在其母公司是你應該爲JAVA_HOME環境變量設置一個bin文件夾(如解釋在Ant手冊中)。您可以使用find -name java -perm +x在您的系統上搜索java可執行文件,也許您可​​以通過這種方式找到乾淨的java安裝。

否則您的解決方案之一是從oracle網站下載JDK,將其解壓縮到像/opt/java_xxx這樣的文件夾中,並將其作爲JAVA_HOME使用。它是我在系統上並行實現的Java 6和7。

+0

jolivier,謝謝你的迴應,但我無法得到你的建議工作。將.profile中的$ JAVA_HOME設置爲/System/Library/Frameworks/JavaVM.framwork/Versions/1.5.0/Home,選中正確的java被「which java」使用,重新解壓縮Tutorial文件夾並修改.xml文件.xml特有的$ JAVA和$ JAVAC指向上面的目錄。同樣的問題。 「發現...」沒有奏效;該命令不存在。無法下載JDK for mac,因爲mac autoupdate會下載java,而且我的電腦表示它已經完全更新(對於32位osx 10.5.8也沒有1.6)。如何在osx上卸載Java版本? – whearyou 2012-07-22 06:16:08

+0

對不起,因爲我說我不知道​​OSX和你的問題安慰我拒絕它。 find是一個linux程序,其mac等價物很難找到(https://www.google.fr/search?q=find+osx+equivalent google找不到找到)。 運行螞蟻之前,你確定「echo $ JAVA_HOME」打印正確的東西? – jolivier 2012-07-23 21:13:37

+0

對不起,如果我簡短:/我最終放棄了教程,並使用螞蟻文件。最後從網站教程中學習了JDBC。不管怎樣,謝謝你 :) – whearyou 2012-08-04 06:53:00