1. 復(fù)現(xiàn)錯(cuò)誤
今天在編寫使用Quartz
執(zhí)行定時(shí)任務(wù)的方法,如下代碼所示:
public class QuartzTest {
public static void main(String[] args) throws SchedulerException {
// 1、創(chuàng)建Scheduler(調(diào)度器)
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 2、創(chuàng)建JobDetail實(shí)例,并與SimpleJob類綁定
JobDetail jobDetail = JobBuilder.newJob(SimpleJob.class)
.withIdentity("job-1", "job-group").build();
// 3、構(gòu)建Trigger(觸發(fā)器),定義執(zhí)行頻率和時(shí)長
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity("trigger-1", "trigger-group")
.startNow() //立即生效
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ? "))
.build();
//4、執(zhí)行
scheduler.scheduleJob(jobDetail, cronTrigger);
scheduler.start();
}
class SimpleJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) {
// 創(chuàng)建一個(gè)事件,下面僅創(chuàng)建一個(gè)輸出語句作演示
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(
Thread.currentThread().getName() + "--" + simpleDateFormat.format(new Date()));
}
}
}
啟動(dòng)時(shí)卻報(bào)出如下圖的錯(cuò)誤:
即SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
2. 分析錯(cuò)誤
首先,找到上圖中的SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
這句話。
將其翻譯成中文是SLF4J:有關(guān)更多詳細(xì)信息,請(qǐng)參閱 http://www.slf4j.org/codes.html#StaticLoggerBinder。
。
于是,點(diǎn)擊鏈接https://www.slf4j.org/codes.html#StaticLoggerBinder,如下圖所示:
不過,這都是英文的,我們不妨翻譯成中文,如下所示:
無法加載類org.slf4j.impl.StaticLoggerBinder
當(dāng)
org.slf4j.impl.StaticLoggerBinder
類無法加載到內(nèi)存中時(shí),將報(bào)告此警告消息。當(dāng)在類路徑上找不到適當(dāng)?shù)?code>SLF4J綁定時(shí),會(huì)發(fā)生這種情況。在類路徑上放置一個(gè)(并且只有一個(gè))slf4j-nop.jar slf4j-simple.jar,slf4j-log4j12.jar,slf4j-jdk14.jar或logback-classic.jar
應(yīng)該可以解決問題。
請(qǐng)注意,slf4j-api
版本2.0.x
及更高版本使用ServiceLoader
機(jī)制。面向slf4j-api 2.x
的后端(如logback 1.3
及更高版本)不隨org.slf4j.impl.StaticLoggerBinder
一起提供。如果放置一個(gè)面向slf4j-api 2.0.x
的日志記錄后端,則需要在類路徑上slf4j-api-2.x.jar
。另請(qǐng)參閱相關(guān)常見問題條目。
自1.6.0
從SLF4J
版本1.6
開始,在沒有綁定的情況下,SLF4J
將默認(rèn)為無操作 (NOP
) 記錄器實(shí)現(xiàn)。
如果您負(fù)責(zé)打包應(yīng)用程序并且不關(guān)心日志記錄,則將slf4j-nop.jar
放在應(yīng)用程序的類路徑上將擺脫此警告消息。請(qǐng)注意,嵌入式組件(如庫或框架)不應(yīng)聲明對(duì)任何SLF4J
綁定的依賴關(guān)系,而應(yīng)僅依賴于slf4j-api
。當(dāng)庫聲明對(duì)SLF4J
綁定的編譯時(shí)依賴關(guān)系時(shí),它會(huì)將該綁定強(qiáng)加給最終用戶,從而否定SLF4J
的目的。
總的來說,就是缺少slf4j-log4j12.jar
這個(gè)依賴。
于是,查找我的項(xiàng)目,確實(shí)缺少slf4j-log4j12.jar
依賴。
3. 解決錯(cuò)誤
由于我的項(xiàng)目缺少slf4j-log4j12.jar
依賴,在pom.xml
中增加如下以來即可:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.7</version>
<scope>compile</scope>
</dependency>
重新啟動(dòng)項(xiàng)目,便能正常運(yùn)行。
4. 解決該錯(cuò)誤的其他方法
因?yàn)槲业腻e(cuò)誤在項(xiàng)目中缺少slf4j-log4j12
依賴,在pom.xml
中增加該依賴即可。
如果你在項(xiàng)目中已增加了slf4j-log4j12
依賴,但還是報(bào)錯(cuò)的話,可以參考如下解決方法。
檢查范圍(scope
)是否設(shè)置為test
,如下代碼所示:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.7</version>
<scope>test</scope>
</dependency>
如果范圍(scope
)設(shè)置為test
,也就是說只有在測(cè)試環(huán)境下,才可以使用。
而我是在main
方法中直接運(yùn)行,所以不屬于測(cè)試環(huán)境,所以,這個(gè)包相當(dāng)于就沒有加入依賴。
可以將范圍(scope
)修改成compile
,如下圖所示:文章來源:http://www.zghlxwxcb.cn/news/detail-756285.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-756285.html
到了這里,關(guān)于多種方法解決Failed to load class “org.slf4j.impl.StaticLoggerBinder“.的錯(cuò)誤的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!