#java #azure #azureservicebus
#java #azure #azureservicebus
Вопрос:
Документы служебной шины Azure приведены на рисунке в качестве примера:
что она использует java 8. Также в примерах кода используются синтаксис и функции Java 8. У меня есть среда java 7, и я не могу заставить ее работать, предположительно, потому, что Java слишком старая.
Кто-нибудь знает рабочую комбинацию служебной шины Azure с Java 7? Мне нужна либо версия, которая работает наверняка, либо ответ, что ни одна версия этого не делает.
Я тестирую с новейшей доступной версией служебной шины Azure 1.2.
Ответ №1:
Я проверил список репозиториев maven для Azure ServiceBus, все эти версии после 0.9.8
все созданы Java 8 с помощью проверки pom.xml
файла, версия 0.9.8
создана Java 1.6. Следовательно, нет никаких выпущенных файлов jar, скомпилированных Java 7 или другой более ранней версией Java для последней версии 1.x.x
.
Обходной путь для вас — вручную загрузить исходные коды Azure ServiceBus из репозитория GitHub, чтобы самостоятельно скомпилировать его в maven. Для этого можно использовать JDK 7 или даже JDK 8. Единственные изменения, которые вам нужны, — это использовать 1.7
вместо 1.8
для настройки maven-compiler-plugin
в pom.xml
, например, как показано ниже.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<source>1.7</source> <!-- 1.8 -->
<target>1.7</target> <!-- 1.8 -->
<optimize>true</optimize>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
Примечание: При использовании JDK 8 для выполнения этого вышеописанного для компиляции с javac
параметром -target 1.7 -source 1.7
, вы должны убедиться, что нет никакого кода использования функций Java 8, который вызовет ошибку компилятора, такую error: lambda expressions are not supported in -source 1.7
как для JDK 8. Однако я грубо проверил ее исходные коды, которых, похоже, нет. Для получения более подробной информации о -target
или -source
для Javac 8, пожалуйста, смотрите https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html.
Комментарии:
1. Сначала я добавил исходный код 1.7 не в то место. Теперь, когда она размещена правильно, в сборке maven указано, что в исходных текстах есть лямбда-выражение. Мне бы тоже понадобилось их перезаписать или найти другое решение. Я снял галочку, прежде чем найти оптимальное решение.
2. Моим решением было применить следующую версию Java к моему приложению и обойти эту проблему. Попытка преобразовать лямбды показала, что решение довольно тесно привязано к версии Java 1.8. Переход на Java 1.8 был неизбежен на каком-то этапе, так почему бы не приложить усилия сейчас.
3. Я отмечаю это нормально, потому что это включает использование 0.9.8 в качестве дополнительного параметра, который вполне применим.