2015-05-26 3 views
1

Тот же файл войны, когда он развернут на моей машине, отлично работает. Однако на ubuntu 14. и jdk 1.8 на удаленном сервере я получаю исключение, когда я его развертываю в tomcat, используя maven. Я проверил JDK, перечисленный на удаленном сервере:UnsupportedClassVersionError Unsupported major.minor version 52.0 (не может загрузить класс)

[email protected]:~# sudo 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-8-oracle/jre/bin/java   1072  auto mode 
    1   /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071  manual mode 
* 2   /usr/lib/jvm/java-8-oracle/jre/bin/java   1072  manual mode 

Это версия Java на удаленном сервере:

[email protected]:~# java -version 
java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 



May 26, 2015 12:10:27 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet crudservlet 
java.lang.UnsupportedClassVersionError: crudapproot/EntityResource : Unsupported major.minor version 52.0 (unable to load class crudapproot.EntityResource) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:274) 
    at org.glassfish.jersey.internal.util.ReflectionHelper$7.run(ReflectionHelper.java:402) 
    at org.glassfish.jersey.internal.util.ReflectionHelper$7.run(ReflectionHelper.java:397) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener$AnnotatedClassVisitor.getClassForName(AnnotationAcceptingListener.java:262) 
    at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener$AnnotatedClassVisitor.visitEnd(AnnotationAcceptingListener.java:224) 
    at jersey.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:697) 
    at jersey.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:506) 
    at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:170) 
    at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:899) 
    at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:856) 
    at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:762) 
    at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1190) 
    at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1162) 
    at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1158) 
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:322) 
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:338) 
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:171) 
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:363) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1279) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1192) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

Я развертывание WebApplication с использованием Maven на удаленный сервер, файл П настраиваются следующим образом:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>OrbithubWeb</groupId> 
    <artifactId>OrbithubWeb</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <!-- customize the catalina_home for remote deployment 
    for tomcat7, the remotedeployserverurl is http://localhost:8080/manager/text 
     and for tomcat6 http://localhost:8080/manager/html 
     --> 
    <properties> 
     <java-version>1.7</java-version> 
     <org.springframework-version>4.0.3.RELEASE</org.springframework-version> 
     <warfilename>${project.groupId}</warfilename> 
     <!-- change the url to : http://45.79.143.163:8080/manager/text --> 
     <remotedeployserverurl>http://localhost:8080/manager/text</remotedeployserverurl> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${org.springframework-version}</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <!-- spring framework just added ends here --> 


     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20140107</version> 
     </dependency> 


     <!-- jersey dependencies ends --> 
     <dependency> 
      <groupId>asm</groupId> 
      <artifactId>asm</artifactId> 
      <version>3.3.1</version> 
     </dependency> 
     <!-- jersey dependency ends --> 

     <dependency> 
    <groupId>commons-dbcp</groupId> 
    <artifactId>commons-dbcp</artifactId> 
    <version>1.4</version> 
</dependency> 

     <!-- used for httpclient library --> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.3.2</version> 
     </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.35</version> 
    </dependency> 

    <!-- adding for log4j dependency for logging --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 


<!-- Added 25 May: added the dependecy for Jax-RS 2.0 jersey core Servlet 3.x implementation --> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>2.17</version> 
    </dependency> 
<!-- Added 25 May: for jersey-client implementation --> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.17</version> 
    </dependency> 
<!-- dependency resolved for jax-rs --> 


<!-- Uses this dependency to read from build.properties file. The artifact id # properties-maven-plugin --> 
    <dependency> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <version>1.0-alpha-2</version> 
    </dependency> 

    </dependencies> 



    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
      <!-- changes the default location of war deployment --> 
      <!-- commented it since we are directly deploying war to the ${catalina_home}/webapps --> 
     <!-- <warName>${warfilename}</warName> --> 
    <!--  <outputDirectory>${catalina_home}/webapps</outputDirectory> --> 
     </configuration> 
     </plugin> 

     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 

     </configuration> 
     </plugin> 



     <!-- added to deploy maven build to remote tomcat, update = true :: redeploy's the war files on update -->  
     <plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat7-maven-plugin</artifactId> 
     <version>2.2</version> 
     <configuration> 
      <url>${remotedeployserverurl}</url> 
      <server>tomcat7</server> 
      <path>/${project.groupId}</path> 
      <!-- configuring the tomcat7 to update itself while deploying --> 
      <update>true</update> 
      <!-- added this on 25 April -->  
     </configuration> 
    </plugin> 


    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <version>1.0-alpha-2</version> 
     <executions> 
      <!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. --> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <!-- taking the build.properties from the relative location of the pom file --> 
       <file>build.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 



    </plugins> 
    </build> 

</project> 

снимок развертывания для военного файла на коте является:

[email protected]:~/OrbitHub-Java-Rest-API# mvn clean tomcat7:deploy 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building OrbithubWeb 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ OrbithubWeb --- 
[INFO] Deleting /root/OrbitHub-Java-Rest-API/target 
[INFO] 
[INFO] >>> tomcat7-maven-plugin:2.2:deploy (default-cli) @ OrbithubWeb >>> 
[INFO] 
[INFO] --- properties-maven-plugin:1.0-alpha-2:read-project-properties (default) @ OrbithubWeb --- 
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ OrbithubWeb --- 
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 2 resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ OrbithubWeb --- 
[INFO] Changes detected - recompiling the module! 
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! 
[INFO] Compiling 19 source files to /root/OrbitHub-Java-Rest-API/target/classes 
[WARNING] /root/OrbitHub-Java-Rest-API/src/test/TestCallToWebapp.java: /root/OrbitHub-Java-Rest-API/src/test/TestCallToWebapp.java uses or overrides a deprecated API. 
[WARNING] /root/OrbitHub-Java-Rest-API/src/test/TestCallToWebapp.java: Recompile with -Xlint:deprecation for details. 
[WARNING] /root/OrbitHub-Java-Rest-API/src/asyncrequesthandlr/ControllableExecutors.java: /root/OrbitHub-Java-Rest-API/src/asyncrequesthandlr/ControllableExecutors.java uses unchecked or unsafe operations. 
[WARNING] /root/OrbitHub-Java-Rest-API/src/asyncrequesthandlr/ControllableExecutors.java: Recompile with -Xlint:unchecked for details. 
[INFO] 
[INFO] --- maven-resources-plugin:2.3:testResources (default-testResources) @ OrbithubWeb --- 
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory /root/OrbitHub-Java-Rest-API/src/test/resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ OrbithubWeb --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ OrbithubWeb --- 
[INFO] No tests to run. 
[INFO] Surefire report directory: /root/OrbitHub-Java-Rest-API/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] 
[INFO] --- maven-war-plugin:2.4:war (default-war) @ OrbithubWeb --- 
[INFO] Packaging webapp 
[INFO] Assembling webapp [OrbithubWeb] in [/root/OrbitHub-Java-Rest-API/target/OrbithubWeb-0.0.1-SNAPSHOT] 
[INFO] Processing war project 
[INFO] Copying webapp resources [/root/OrbitHub-Java-Rest-API/WebContent] 
[INFO] Webapp assembled in [202 msecs] 
[INFO] Building war: /root/OrbitHub-Java-Rest-API/target/OrbithubWeb-0.0.1-SNAPSHOT.war 
[INFO] 
[INFO] <<< tomcat7-maven-plugin:2.2:deploy (default-cli) @ OrbithubWeb <<< 
[INFO] 
[INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ OrbithubWeb --- 
[INFO] Deploying war to http://45.79.143.163:8080/OrbithubWeb 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Uploading: http://45.79.143.163:8080/manager/text/deploy?path=%2FOrbithubWeb&update=true 
Uploaded: http://45.79.143.163:8080/manager/text/deploy?path=%2FOrbithubWeb&update=true (12330 KB at 20279.0 KB/sec) 

[INFO] tomcatManager status code:200, ReasonPhrase:OK 
[INFO] OK - Deployed application at context path /OrbithubWeb 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 10.924s 
[INFO] Finished at: Tue May 26 00:00:28 UTC 2015 
[INFO] Final Memory: 22M/54M 
[INFO] ------------------------------------------------------------------------ 
+0

Дважды проверьте версию JVM, которая работает на сервере. Возможно, некоторые пути путались, и это более старая версия. – Thilo

+0

@Thilo, я проверил версию системы на удаленном сервере –

+0

Также здесь приведена конфигурация для maven: Apache Maven 3.0.5 Maven home:/usr/share/maven Версия Java: 1.8.0_45, поставщик: Oracle Корпорация Java home:/usr/lib/jvm/java-8-oracle/jre По умолчанию locale: en_US, кодировка платформы: UTF-8 Название ОС: "linux", версия: "4.0.4-x86_64-linode57" , arch: «amd64», family: «unix» –

ответ

0

Это работает для меня, я нашел учебник для того же здесь: https://askubuntu.com/questions/121654/how-to-set-default-java-version :

Made changes to the JAVA_HOME variable : vi /etc/default/tomcat7 

java8 was found here: 
/usr/lib/jvm/java-8-oracle/bin/ 

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-8-oracle/bin/javac" 1 



sudo update-alternatives --config javac 

To check the jvm that the tomcat is using : 
ps -ef | grep tomcat 

Also, curl http://admin:[email protected]:8080/manager/text/serverinfo 
Смежные вопросы