java - 运行 .jar 文件时 Maven 和 Class 未发现异常
问题描述
我开始使用简单的 hello world 应用程序学习 maven 并添加了一些依赖项:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
并改为System.out.println("Hello World")
:
var logger = LoggerFactory.getLogger(App.class);
logger.info("Hello World");
然后我使用 maven 生命周期创建了 .jar 文件,当我尝试运行它时,我收到了这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at io.github.mat3e.App.main(App.java:11)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more
这是为什么?
解决方案
通过添加以下依赖项来使用 SLF4J 记录器 API 的推荐方法:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
在您的 java 类中获取记录器实例,如下所示:
private static final Logger logger = LoggerFactory.getLogger(App.class);
logger.info("Hello World");
应该工作正常。
查看文档
推荐阅读
- react-native - 如何修复 React Native 中自定义标签栏的行为?
- python-asyncio - 使用 asyncio 完成多项终极工作
- amazon-web-services - 如何在没有任何代码的情况下将来自 websocket 的数据放到亚马逊 kinesis 数据流中(仅通过使用托管 aws 服务)?
- apache - Cloudflare 重定向到 https://www
- python - 如何在python 2.7中制作大量文件
- elm - create-elm-app:如何通过反向代理运行 elm-app start
- django - 如何在 objects.get() 函数中设置动态字段名称
- python - 如何获取原始套接字数据包并将其转换为可读的 http 请求
- java - 用于 mongodb 集合的适当 shrad-key
- mediawiki - 如何移动 mediawiki 'Echo' 扩展图标?