31
7
|
I have Spring/Java App that is compiled with Compiler compliance level 1.5.
I have a new Linux setup where I downloaded Apache Tomcat 8.0.8.
I downloaded JDK 8u5.
I set the path in bash as follows:
Java -version reports:
And set in setnenv.sh (for Tomcat):
When I deploy my WAR file I get below error. I think Tomcat doesn't seem to use the Java I installed. I have followed the setup instructions. PS: I also tried JRE instead of JDK and same issue.
Thank you in advance, Robert
| |||
65
|
The class that's throwing the exception is using this code to check for Java version:
So, when Spring 2.5 was first released, the code didn't assume it will be run in a Java version that's later than 1.7. For Java 8 and beyond, the code above will assume default 1.4 version. Because of this, the annotations part will complain.
I think you either need to upgrade your Spring version or use Java 7. Spring 2.5 has been EOLedfor quite some time now, anyway.
| ||||||||||||
|
5
|
I have the similar problem. Old Spring MVC/Spring Faces application under spring 2.5.5 doesn't run on Java 8.
I spent few days trying to find solution because we need to run Java 8.
First idea was: to upgrade complete Spring package up to 4.1.6. I used Maven. Problem of this method that after that it is necessary to rework nearly the whole project. It is because for example in Spring 4 were removed JSF implementation and some special taglibs where completely removed, like
<sf:..> . And were some more major and minor problems with configuration, adapters, handlers, mappings....
Second approach was to replace Spring JARs partially.One by one. Again no success. Impossible to replace any jar without touching dependencies.
I believe that after few weeks or monthes of struggling I can get success on both approaches. But have no so much time. And I gave up. My solution is:
I found source file JdkVersion.java from org.springframework.core package.http://www.java2s.com/Code/Jar/o/Downloadorgspringframeworkcoresources300releasejar.htm. I created org.springframework.core package in my project with only one class JdkVersion. After that made simple change of the code to check Java 8 version. Smth like that:
...
Even this code change is not really necessary, only just for fun.It is because this source came from Spring 3.0.0 package where Spring guys already changed the Java version check. Versions higher than 7 are not considered as old java.
Now application starts properly. It call JdkVersion class from my project instead of jar.
Works so far! Thanks for all from this thread who gave this idea.
Thanks
| ||||||||
|
3
|
TO =>
OR
| ||
2
|
I need to support Spring 2.5.5 on Java 8, so I used the approach from this answer to provide a future-proof drop-in replacement for
JdkVersion.class with as few side-effects as possible (nobody else posted a complete class, and I didn't want to hijack the other answer). There is no need to check for Java 8, simply default to Java 7, which is the highest version the class cared about:
Extract the jar file:
Check the Spring version in
META-INF/MANIFEST.MF (you should see something like version=2.5.5 ). Look up the appropriate version of JdkVersion.java and use that as a starting point (the example below is for Spring 2.5.5 and you don't want to change any method signatures from the version you're working with).
Check the major and minor version of the
JdkVersion.class file:javap -verbose org/springframework/core/JdkVersion.class
We see that the class was original compiled as target 48.0 (looking this up, we find that is Java 1.4):
Create
org/springframework/core/JdkVersion.java with the following content:
Then compile the new class as Java 1.4:
javac -source 1.4 org/springframework/core/JdkVersion.java
You can check the major.minor version again as above if needed.
Create the modified jar file (without overwriting the original manifest):
jar Mcf ../spring-modified.jar *
Copy the modified jar file where needed (as
spring.jar or as appropriate). | ||
1
|
I happen to be another unfortunate user of a very old project (developed in 2008!) which is still using Spring 2.5. And it is not a Maven project either, so upgrading to later versions of Spring was taking a long time with dependencies failing and giving build errors. I downgraded tomcat JRE to 1.7 and it worked fine.
Just documenting how to do that in eclipse in case someone needs help:
| ||
0
|
i had the same problem, but i have a solution:
in your project file pom.xml replace:
for:
and say good bye to your problems!!
This two dependecies are the replacement for the firts dependency in the most part.
| ||
0
|
Migrate your spring version from 2.5 to >=3.2.3.
For Spring migration you need to do following changes -
1) In your pom.xml remove dependency for spring 2.5.6 and add dependency for spring new version.
2) Update 'xsi:schemaLocation' in beans tag of applicationcontet.xml file of your project.
e.g update http://www.springframework.org/schema/beans/spring-beans-2.5.xsd tohttp://www.springframework.org/schema/beans/spring-beans-3.2.xsd for spring 3.2.3 version.
3) Clean,build and re-deploy your project.
|
setenv.sh
: JAVA_HOME=/home/userid/jdk1.8.0_05 – Andrei Stefan May 22 '14 at 17:48