【问题标题】:java.lang.NoClassDefFoundError in ubuntu terminalubuntu 终端中的 java.lang.NoClassDefFoundError
【发布时间】:2018-01-24 15:37:05
【问题描述】:

我正在创建一个 cron 调度程序,为此我使用以下代码:-

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.ScheduleBuilder;

public class CronSched {

public static void main(String[] args) throws SchedulerException {
    System.out.println("Started");
    JobDetail job = JobBuilder.newJob(CronJob.class).build();
    Trigger t1 = TriggerBuilder.newTrigger().withIdentity("MAILER").withSchedule(CronScheduleBuilder.cronSchedule("0 33 2 1/1 * ? *")).build();
    Scheduler sc = StdSchedulerFactory.getDefaultScheduler();

    sc.start();
    sc.scheduleJob(job,t1);
  }

}  

我正在使用以下语句在终端中编译以下代码:-

javac -cp ".:/home/aditya/CronSched/lib/quartz-2.2.3.jar: /home/aditya/CronSched/lib/slf4j-api-1.7.25.jar: /home/aditya/CronSched/lib/slf4j-simple-1.7.25.jar: " CronSched.java  

在运行代码时,我使用以下语句:-

java CronSched  

我收到以下错误:-

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/quartz/ScheduleBuilder
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)

Caused by: java.lang.ClassNotFoundException: org.quartz.ScheduleBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more

怎么办?

【问题讨论】:

    标签: java ubuntu terminal cron


    【解决方案1】:

    您必须将所有必需的 jar 添加到您的运行时类路径中。

    java -cp "quartz-2.2.3.jar:...." CronSched 
    

    【讨论】:

    • 在执行期间也是?
    • 是的,在执行期间。否则,您可以使用所有必需的类构建一个“fat”-jar,然后您可以使用 java -jar fat.jar 运行该 jar
    • 太棒了!但发生另一个错误 java -cp ".:/home/aditya/CronSched/lib/quartz-2.2.3.jar: /home/aditya/CronSched/lib/slf4j-api-1.7.25.jar: /home/aditya /CronSched/lib/slf4j-simple-1.7.25.jar: /home/aditya/CronSched/lib/slf-log.jar: /home/aditya/CronSched/lib/slf-jdk.jar "线程中的 CronSched 启动异常“主” java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 2019-06-03
    • 2017-03-20
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多