Downgrading an application from Java 1.6 to Java 1.5

downgrade, java, java-5, java-6

Solution

I suggest you look in the manifest for each library for lines like

Bundle-RequiredExecutionEnvironment: J2SE-1.3
X-Compile-Target-JDK: 1.5
Build-Jdk: 1.5.0_22
Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.)

I would only take the create by if no other option appears.

The only way to know for sure is to example a class in the library (assuming all classes where built for the same version)

javap -v -classpath net\sf\trove4j\trove4j\3.0.2\trove4j-3.0.2.jar gnu/trove/list/TLongList | grep version

  minor version: 0
  major version: 49

A table of versions are

major  minor Java platform version 
45       3           1.0
45       3           1.1
46       0           1.2
47       0           1.3
48       0           1.4
49       0           1.5
50       0           1.6
51       0           1.7
52       0           1.8

For more details http://en.wikipedia.org/wiki/Java_class_file

Problem

I have a small application written in Java that was tested and ran on a JRE_1.6. Now I need to run it against a JRE_1.5. I altered the source code I had to match Java 1.5 requirements and the project compiled fine. The problem is that it uses a number of precompiled libraries like `opencsv-2.3` and those were compiled with Java 1.6, so calling any of their classes results in a `java.lang.UnsupportedClassVersionError`. Most of them are `com.apache` libs + `opencsv-2.3` + `org.jdom` How can I figure out which libraries exactly need to be replaced? How can I replace the libraries that need it? Upd: the how can I replace part actually stands for "what can be done if there is no older library?" Is there a way to downgrade a compiled library or do I need to find a similar solution on 1.5 and rewrite the code?

Original source