2014-06-06 50 views
0

它可能看起來像一個現有的問題..但其他答案沒有幫助我。 :(不支持major.minor版本51.0,即使使用相同的java版本來編譯和部署

下面是我使用JDK1.7建立從Eclipse的Web項目的WAR文件做 1.在Eclipse(Windows 8中) 2.將其複製在UNIX tomcat7的webapps目錄。Unix的也有java1.7,如果我運行Java的版本,它說1.7 3.現在Tomcat的運行,它會引發以下錯誤一類 不支持MAJOR.MINOR版本51.0

不知道我是缺少在這裏。

+0

正確看*如何運行Tomcat。我強烈懷疑你正在使用Java 6運行它。(你的Tomcat啓動日誌是否顯示這些信息?從運行Tomcat開始已經有一段時間了......) –

+0

@Jon .. Thanks!我沒有看到任何日誌..你可以請建議我在哪裏可以看看它是否使用Java 6. –

+0

嗯,我會開始添加診斷程序,但是你啓動Tomcat - 記錄它正在運行哪個二進制文件等。 –

回答

2

它可能看起來像一個存在的問題..但其他答案沒有幫助我。:(

它就像一個存在的問題。我可以保證。

問題每次都基本相同。代碼已經與Java 7一起編譯,並且正在運行在較舊的JVM上。這就是錯誤信息的含義。總是。

因此,您需要弄清楚爲什麼代碼在較舊的JVM上運行。而且,由於代碼是在Tomcat上運行,這意味着你需要弄清楚:

  • 你是如何啓動Tomcat和
  • 爲什麼Tomcat啓動程序/腳本使用老版本的JVM,而不是一個你期待它的使用。

這通常歸結爲識別和閱讀正在使用的啓動腳本或腳本,並確定其環境變量設置來自何處。

+0

謝謝!但是,您能否建議一些方法來完成這些步驟? –

+0

你知道你是如何啓動Tomcat嗎? –

+0

我在ubuntu中。安裝tomcat後,它會自動創建啓動文件..我正在運行使用「service tomcat7 start」 –

1

消息「Unsupported major.minor version」表示您在jvm中運行的java的版本比用於編譯代碼的版本低。請注意,Java是向後兼容的,因此您可以在Java 7上運行Java 6,但不能以其他方式運行。

要驗證你的tomcat的vesion,使用此:./version.sh

當我在我的tomcat運行它,我得到這個:

<...>/usr/local/apache-tomcat-7.0.50/bin# ./version.sh 
Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.50 
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.50 
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.50/temp 
Using JRE_HOME:  /usr/local/java 
Using CLASSPATH:  /usr/local/apache-tomcat-7.0.50/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.50/bin/tomcat-juli.jar 
Server version: Apache Tomcat/7.0.50 
Server built: Dec 19 2013 10:18:12 
Server number: 7.0.50.0 
OS Name:  Linux 
OS Version:  2.6.32-47-server 
Architecture: amd64 
JVM Version: 1.7.0_17-b02 
JVM Vendor:  Oracle Corporation 

注入口JVM版本

你能做些什麼來解決這個問題:或者使用相同版本編譯你的類,或者安裝最新版本的Tomcat。

+0

該腳本可能會/可能會引起誤解。它會告訴您如果您從該目錄手動運行catalina.sh,那麼JVM版本會是什麼。但是,當'init'系統啓動Tomcat時(與OP的情況一樣),環境變量來自不同的地方,並可能導致使用不同的JVM。你真的需要了解'init'系統如何啓動Tomcat。 –

+0

我明白你的觀點。但是如果OP安裝了Tomcat並且沒有改變任何設置(就像在帖子中看到的那樣),那麼這可能表明版本是什麼。然而,你是對的,並且正確的做法是,例如,將java版本打印到日誌中。 –

+0

還要注意,這只是告訴你正在使用什麼版本的Java(我們可以從原始錯誤信息中推斷出這個版本)。 「version.sh」腳本或打印日誌版本都不會告訴您爲什麼選擇JVM版本/環境變量設置來自哪裏。你真的需要找到並閱讀相關的腳本。 –

相關問題