網易蜂巢是網易推出的一個基於docker容器技術的雲服務,最近須要用到網易蜂巢的容器。java
能夠直接用支持ssh鏈接的終端連到蜂巢mysql
ssh -i id_rsa root@106.2.61.90
蜂巢用的是debian系統linux
root@sxplus-170598-2252272e-hl3nx:~# cat /etc/issue Debian GNU/Linux 7 \n \l
將項目從github克隆到蜂巢git
git clone https://github.com/scarlettxu/restaurant.git
由於蜂巢沒有publickey,因此用https協議github
編譯打包項目web
mvn package
將項目包拷貝到tomcatsql
cp *.war /var/lib/tomcat7/webapps
在瀏覽器訪問發佈的服務docker
http://106.2.61.90:8080/restaurant/noodles
出現了以下錯誤apache
type Exception report message com/sx/NoodlesServlet : Unsupported major.minor version 51.0 (unable to load class com.sx.NoodlesServlet) description The server encountered an internal error (com/sx/NoodlesServlet : Unsupported major.minor version 51.0 (unable to load class com.sx.NoodlesServlet)) that prevented it from fulfilling this request. exception java.lang.UnsupportedClassVersionError: com/sx/NoodlesServlet : Unsupported major.minor version 51.0 (unable to load class com.sx.NoodlesServlet) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2905) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:461) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1003) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) java.lang.Thread.run(Thread.java:701) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.28 logs.
這個因爲編譯項目所用的java版本和運行是用的java版本不一樣bootstrap
maven打包時所用的java版本
root@sxplus-170598-2252272e-hl3nx:/usr/lib/jvm/default-java/jre# mvn -version Apache Maven 3.0.4 Maven home: /usr/share/maven Java version: 1.7.0_95, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "3.18.20-nce-amd64", arch: "amd64", family: "unix"
tomcat運行用的default java
root@sxplus-170598-2252272e-hl3nx:/usr/lib/jvm/default-java/jre# ps -ef|grep tomcat root 1 0 0 10:27 ? 00:00:00 /bin/sh -c /etc/init.d/tomcat7 start && /etc/init.d/mysql start && /usr/sbin/sshd -D tomcat7 1601 1 2 11:20 ? 00:00:03 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp org.apache.catalina.startup.Bootstrap start root 1643 483 0 11:22 pts/0 00:00:00 grep tomcat
default java 版本
root@sxplus-170598-2252272e-hl3nx:/# java -version java version "1.6.0_38" OpenJDK Runtime Environment (IcedTea6 1.13.10) (6b38-1.13.10-1~deb7u1) OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
查看安裝的全部java版本和default版本
root@sxplus-170598-2252272e-hl3nx:/usr/lib/jvm/default-java/jre# update-alternatives --display java java - auto mode link currently points to /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java - priority 1061 slave java.1.gz: /usr/lib/jvm/java-6-openjdk-amd64/jre/man/man1/java.1.gz /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java - priority 1051 slave java.1.gz: /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz Current 'best' version is '/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java'.
更改default java版本
root@sxplus-170598-2252272e-hl3nx:/usr/lib/jvm/default-java/jre# update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 auto mode 1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode 2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 manual mode Press enter to keep the current choice[*], or type selection number: 2 update-alternatives: using /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
更改後的java版本
root@sxplus-170598-2252272e-hl3nx:/usr/lib/jvm/default-java/jre# java -version java version "1.7.0_95" OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-1~deb7u1) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
這尚未解決問題,最後是更改了項目裏面的pom.xml裏面的編譯的版本,從1.6改成1.7,才解決了問題
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration></plugin>