应用 proguard 后出现以下错误。
用于 proguard 的 -injar 没有收到错误。
通过跳过所有类(包括混淆中混淆的依赖项)来检查错误。
使用 maven- assembly-plugin 创建具有依赖项的 injar 。
2023-09-28 23:42:58,309 JavaFX Application Thread ERROR Error processing element TextAreaAppender ([Appenders: null]): CLASS_NOT_FOUND
2023-09-28 23:42:58,488 JavaFX Application Thread ERROR Unable to locate appender "JavaFXLogger" for logger config "root"
自定义Appender类
package my.package;
@Plugin(
name = "TextAreaAppender",
category = "Core",
elementType = "appender",
printObject = true)
public final class TextAreaAppender extends AbstractAppender {
private static final Logger logger = LogManager.getLogger();
private static CodeArea textArea;
private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
private final Lock readLock = rwLock.readLock();
public TextAreaAppender(String name, Filter filter,
Layout<? extends Serializable> layout,
final boolean ignoreExceptions) {
super(name, filter, layout, ignoreExceptions);
}
@PluginFactory
public static TextAreaAppender createAppender(
@PluginAttribute("name") String name,
@PluginElement("Layout") Layout<? extends Serializable> layout,
@PluginElement("Filter") final Filter filter) {
if (name == null) {
LOGGER.error("No name provided for TextAreaAppender");
return null;
}
if (layout == null) {
layout = PatternLayout.createDefaultLayout();
}
return new TextAreaAppender(name, filter, layout, true);
}
@Override
public void append(LogEvent event) {
readLock.lock();
.....
}
}
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="my.package" >
<!-- Logging Properties -->
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5p | [%thread] (%F:%L) - %m%n</Property>
<Property name="LOG_LEVEL">INFO</Property>
<Property name="APP_LOG_ROOT">logs</Property>
</Properties>
<Appenders>
<TextAreaAppender name="JavaFXLogger">
<PatternLayout pattern="${LOG_PATTERN}"/>
</TextAreaAppender>
</Appenders>
<Loggers>
<Logger name="my" additivity="false" level="${LOG_LEVEL}">
<AppenderRef ref="JavaFXLogger"/>
</Logger>
<Root level="${LOG_LEVEL}">
<AppenderRef ref="JavaFXLogger"/>
</Root>
</Loggers>
</Configuration>
确保配置中的包被正确引用。 仅当包引用错误时,我才在您的代码中收到此异常。