Существует ли версия служебной шины Azure, совместимая с Java 7?

#java #azure #azureservicebus

#java #azure #azureservicebus

Вопрос:

Документы служебной шины Azure приведены на рисунке в качестве примера:

https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues#configure-your-application-to-use-service-bus

что она использует 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 в качестве дополнительного параметра, который вполне применим.