When using this in a library that ends up in client code then TeaVM fails with such error:
[INFO] Running TeaVM
[INFO] Output file built with errors
[ERROR] Method org.slf4j.Logger.atLevel(Lorg/slf4j/event/Level;)Lorg/slf4j/spi/LoggingEventBuilder; was not found
at io.github.mmm.scanner.SimpleTextFormatMessageHandler.log(SimpleTextFormatMessageHandler.java:59)
at io.github.mmm.scanner.SimpleTextFormatMessageHandler.handle(SimpleTextFormatMessageHandler.java:67)
at io.github.mmm.base.text.AbstractTextFormatMessageHandler.add(AbstractTextFormatMessageHandler.java:35)
at io.github.mmm.scanner.AbstractCharStreamScanner.addMessage(AbstractCharStreamScanner.java:129)
at io.github.mmm.base.text.TextFormatProcessor.addMessage(TextFormatProcessor.java:53)
at io.github.mmm.base.text.TextFormatProcessor.addWarning(TextFormatProcessor.java:29)
at io.github.mmm.scanner.AbstractCharStreamScanner.expectOne(AbstractCharStreamScanner.java:594)
at io.github.mmm.scanner.CharStreamScanner.expectOne(CharStreamScanner.java:786)
at io.github.mmm.nls.formatter.impl.plugin.NlsFormatterPluginChoice.parseCondition(NlsFormatterPluginChoice.java:149)
at io.github.mmm.nls.formatter.impl.plugin.NlsFormatterPluginChoice.parseChoice(NlsFormatterPluginChoice.java:111)
at io.github.mmm.nls.formatter.impl.plugin.NlsFormatterPluginChoice.<init>(NlsFormatterPluginChoice.java:88)
at io.github.mmm.nls.formatter.impl.NlsFormatterManagerImpl.getFormatter(NlsFormatterManagerImpl.java:66)
at io.github.mmm.nls.variable.impl.NlsVariableParserImpl.parse(NlsVariableParserImpl.java:45)
at io.github.mmm.nls.formatter.impl.NlsMessageFormatterImpl.<init>(NlsMessageFormatterImpl.java:51)
at io.github.mmm.nls.impl.NlsMessageImpl.getLocalizedMessage(NlsMessageImpl.java:94)
at io.github.mmm.nls.NlsMessage.getLocalizedMessage(NlsMessage.java:92)
at io.github.mmm.validation.ValidationFailure.getLocalizedMessage(ValidationFailure.java:71)
at io.github.mmm.ui.spi.widget.AbstractUiNativeWidget.validate(AbstractUiNativeWidget.java:442)
at io.github.mmm.ui.spi.widget.AbstractUiNativeWidget.validateDown(AbstractUiNativeWidget.java:430)
at io.github.mmm.ui.api.widget.UiWidget.validate(UiWidget.java:253)
at io.github.mmm.ui.api.widget.UiWidget.validate(UiWidget.java:235)
at io.github.mmm.ui.tvm.widget.input.TvmInput.onFocusLoss(TvmInput.java:341)
at io.github.mmm.ui.tvm.widget.input.TvmRadioChoice$<init>$lambda$_0_1.handleEvent(TvmRadioChoice.java:42)
at io.github.mmm.ui.tvm.widget.input.TvmRadioChoice$<init>$lambda$_0_1.handleEvent$exported$0
The SLF4J
Logger
API has been extended in version2.x
and now supports fluent logging: https://www.slf4j.org/manual.html#fluentWhen using this in a library that ends up in client code then TeaVM fails with such error:
Method
atLevel
and according stuff needs to be implemented here: https://github.com/konsoletyper/teavm/blob/d40bd9989b36578b08d8f3a58d89070593d7c82e/classlib/src/main/java/org/teavm/classlib/java/util/logging/TLogger.java#L27