我有一个GWT多模块Maven项目 布局:
pom.xml
client-module //client side: contains some base classes. I use JDK's java.util.log so that it logs on Firebug's console
server-module //server side: extends some code from client-module (so it uses JUL) for common behaviour. I use log4j
客户端模块是共享代码
我想全局使用SLF4J,但似乎我不能使用多个绑定 (每个项目多个绑定,每个maven模块单个绑定)。
我同意,但我想使用每个maven模块的特定SLF4J绑定。
所以我的情况是客户端模块的SLF4J-JDK和服务器模块的SLF4J-log4j。
相关代码: 的的pom.xml
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.3</version>
</dependency>
client-module /BaseFoo.java
public abstract class BaseFoo {
private static final Logger logger = LoggerFactory.getLogger(BaseFoo.class.getName());
// ... interesting stuff
}
服务器模块 /Foo.java
public class Foo extends BaseFoo {
private static final Logger logger = LoggerFactory.getLogger(BaseFoo.class.getName());
// ...more interesting stuff
}
我已经尝试根据文档进行配置,但它不起作用。 问题是SLF4J需要准备好GWT。 我得到的错误:
[ERROR] Line 23: No source code is available for type org.slf4j.Logger; did you forget to inherit a required module?
这意味着GWT将BaseFoo类编译为Javascript(这就是为什么它在客户端模块中运行在客户端)但由于SLF4j中的类/源代码未被模拟而失败。
你有解决方法吗? 谢谢!