Вы не можете запустить класс, скомпилированный с JDK 1.6 на предыдущем JDK 1.4, потому что вы получите исключение java.lang.UnsupportedClassVersionError
. Это связано с тем, что Java несовместима с прямой совместимостью, она просто обратно совместима (см. спецификация ).
Для проверки я установил JDK 1.4.2.19 и JDK 1.6.0.23 и написал пример приложения:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Построил это с JDK 1.6.0.23:
../1.6.0.23/bin/javac HelloWorld.java
И запустить его с JDK 1.4.2.19:
../1.4.2.19/bin/java HelloWorld
Выход:
Exception in thread "main" java.lang.<b>UnsupportedClassVersionError</b>: HelloWorld
(<b>Unsupported major.minor version</b> 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
...
Решение : Вы можете попытаться перестроить ваше стороннее приложение с JDK 1.4, если оно не вызывает методы, представленные в 1.6 (и 1.5).