2015-12-15 9 views
-4

У меня в моем компьютере java 8, и я использую все новые библиотеки в java 8, но я компилирую его на JDk5, потому что у моего клиента есть старая версия java, и он надевает Не хотите его менять.Использовать новые библиотеки в java со старым JDK

Я хочу спросить - как я могу включить библиотеки, которые я использую из java 8, чтобы моя программа работала на компьютере клиента?

+0

Если клиент запускает java 5, то вы не можете выполнить java 8. Если клиенты хотят использовать последнюю версию java, он должен обновиться. Если нет, вы должны использовать java 5. – csmckelvey

+0

Я не ** выполняю ** java 8, компилирую с JDK5, я просто хочу ** библиотеки ** java 8 – shmil

+0

Java 5 не может скомпилировать java 8. – csmckelvey

ответ

3

Библиотеки Java 8 сами зависят от новых функций языка, встроенных в Java 8. Например, они используют методы lambdas и по умолчанию и статические методы на самих интерфейсах.

Это означает, что вы не можете просто запускать библиотеки Java 8 в среде выполнения Java 5. Библиотеки, встроенные в Java 8, критически зависят от среды выполнения Java 8.

Вы не можете этого сделать.

+0

Думаю, я понял. Я попытался запустить java 5, и у меня был этот результат - «Исключение в потоке» main «java.lang.NoClassDefFoundError: java/util/function/Co nsumer в java.lang.Class.forName0 (собственный метод) at java.lang.Class.forName (Class.java:242) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main (JarRsrcLoa der.java: 56) 'и я думаю, что это причина – shmil

+1

Это просто говорит вам, что библиотеки нет. –

0

Ближе всего вы можете создать классы с совместимостью источника 1.5 с использованием JDK 1.8.
Это, однако, не позволит использовать исходные файлы выше, чем Java 1.5, а существующие конструкции, такие как лямбда-выражения, например, не будут компилироваться.
Для этого подхода, необходимо выполнить следующие действия:

  1. Set «Compiler» опций, не относящимся к по умолчанию и указать «Сформирован совместимость .class файлов» 1.5.
  2. "Источник Совместимость" до 1.5.

enter image description here Надеюсь, это то, что вы имели в виду.

+0

, почему вы это говорите? если я просто изменил компилятор, но не изменил «совместимость с исходным кодом», он все еще компилируется с помощью java 5 и ** может использовать файл выше, чем java 5, если он не будет выполнен - ​​почему он может скомпилировать? – shmil

+0

Настройки компилятора могут оставаться как 1,8, но файлы классов создаются для java 1.5. –

+0

Я не понимаю вашего комментария. поэтому я могу изменить только компилятор, а не источник? – shmil