首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用maven插件实现SLF4J上的TomEE 1.7.2

用maven插件实现SLF4J上的TomEE 1.7.2
EN

Stack Overflow用户
提问于 2015-10-15 07:00:50
回答 1查看 603关注 0票数 1

我想在tomee项目中使用SLF4J api和LOG4J2 impl。因此,我在我的pom.xml中添加了:

代码语言:javascript
复制
<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>1.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.4</version>
    </dependency>

我编辑了logging.properties文件的TomEE如下:

代码语言:javascript
复制
handlers = org.slf4j.bridge.SLF4JBridgeHandler

我尝试用下面的maven命令运行我的项目:

代码语言:javascript
复制
mvn package tomee:run

不幸的是,我有个例外:

代码语言:javascript
复制
objc[2756]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Handler error
java.lang.ClassNotFoundException: org.slf4j.bridge.SLF4JBridgeHandler
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:560)
    at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:503)
    at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:311)
    at java.util.logging.LogManager$3.run(LogManager.java:399)
    at java.util.logging.LogManager$3.run(LogManager.java:396)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:396)
    at java.util.logging.LogManager.access$800(LogManager.java:145)
    at java.util.logging.LogManager$2.run(LogManager.java:345)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.util.logging.LogManager.ensureLogManagerInitialized(LogManager.java:338)
    at java.util.logging.LogManager.getLogManager(LogManager.java:378)
    at java.util.logging.Logger.demandLogger(Logger.java:448)
    at java.util.logging.Logger.getLogger(Logger.java:502)
    at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:71)
    at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:196)
    at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:67)
    at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:93)
    at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:102)
    at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:59)

我尝试将依赖项添加为lib:

代码语言:javascript
复制
<plugin>
            <groupId>org.apache.openejb.maven</groupId>
            <artifactId>tomee-maven-plugin</artifactId>
            <configuration>
                <context>ROOT</context>
                <libs>
                    <li>org.slf4j:slf4j-api:1.7.12</li>
                    <lib>org.slf4j:jul-to-slf4j:1.7.12</lib>
                </libs>
            </configuration>
        </plugin>

我可以在maven控制台中看到:

代码语言:javascript
复制
[INFO] Copied 'org.slf4j:slf4j-api:1.7.12' in '/Users/xxx/Work/Git/xxx/target/apache-tomee/lib/slf4j-api-1.7.12.jar
[INFO] Copied 'org.slf4j:jul-to-slf4j:1.7.12' in '/Users/xxx/Work/Git/xxx/target/apache-tomee/lib/jul-to-slf4j-1.7.12.jar

但我也有同样的例外:

在查看了jl-to-slf4j-1.7.12.jar内部之后,我可以看到org.slf4j.bridge.SLF4JBridgeHandler类文件是存在的。

我不明白为什么托梅找不到?mac的JDK bug可能与此有关吗?objc[10012]: Class JavaLaunchHelper is implemented in both ... libinstrument.dylib. One of the two will be used. Which one is undefined

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 17:24:38

代码语言:javascript
复制
<li>org.slf4j:slf4j-api:1.7.12</li>

李标签里不见了。刚刚用lib更新

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33141924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档