Я ни в коем случае не являюсь разработчиком Scala, но мне нужно использовать некоторую библиотеку, написанную на Scala, в моем проекте Java.
Я могу собрать JAR из этой библиотеки и использовать его в качестве зависимости Maven, импортировать классы от нее (несмотря на несколько искаженные имена), но есть одна вещь, которая мешает мне использовать эту библиотеку в полной мере.
Большинство классов изобилуют методами, помеченными модификатором "inline". Эти методы кажутся мне полезными, и я хотел бы иметь возможность свободно вызывать их.
Но из-за их встроенной природы они оптимизированы для получения файлов .class во время сборки и записываются только в файлы .tasty. , которые игнорируются компилятором Java, следовательно, они становятся недоступными для кода Java.
Поэтому мне нужно получить эти методы в доступном для Java байт-коде, либо вообще отключив встраивание на уровне компилятора, либо сохранив их inline, но дополнительно компилируя их тела в файлы .class.
Я пытался использовать некоторые связанные параметры CLI scalac, например -opt:* и -Yno-inline, но безуспешно, Scala 3 не предоставляет ни одного из них. больше.
Затем я спросил ChatGPT, он предложил написать плагин компилятора Scala, который программно меняет некоторые связанные флаги в дереве AST, но предоставленный код не скомпилировался из-за отсутствия импорта, и я не могу найти их в scala3-компилятор. Я пытался погуглить теорию написания плагинов для компилятора Scala, но тоже безуспешно.
Поэтому мой вопрос довольно прост - как принудительно включить встроенные методы в байт-код? Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ulting-jar
Сохранение байт-кода встроенных методов в результирующем JAR-файле. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение