java.lang.NoClassDefFoundError:org / quartz / SchedulerFactory

prranay:

我正在使用Java Quartz库编写应用程序。

我的pom.xml具有以下依赖性。

<dependencies>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.pranayhere</groupId>
            <artifactId>recurr</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
    </dependencies>

当我在intellij中运行它时它起作用,但是当我使用 java -jar target/application.jar

我收到以下错误:

java -jar target/test-rrule-quartz-1.0-SNAPSHOT.jar 
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/quartz/SchedulerFactory
        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.SchedulerFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more

让我知道是否需要其他信息。

马克·布拉姆尼克:

在maven中添加依赖项的事实仅意味着在编译代码时,石英罐位于类路径中。这意味着您可以在代码中使用该jar中的类/接口。

但是,一旦maven编译了代码并创建了jar,则您有责任安排“运行时”(对进行操作java -jar)。也就是说,您必须将石英罐添加到类路径中。Maven是一个构建框架,它不了解运行时。

解决此问题的方法有很多,仅举几例:

  1. 运行带有-cp标志并将所有的罐子添加到类路径。在这种情况下,您必须提供所有jar的路径,因此可能需要将所有依赖项复制到某种“ lib”文件夹中,并随工件一起分发。这在某种程度上是完成这项工作的“老派”方法。

  2. 使用“胖罐子”(如果您不熟悉此概念,请参见此处),即-将所有代码从依赖罐子“烘焙”到您创建的一个罐子中(test-rrule-quartz-1.0-SNAPSHOT.jar在这种情况下)。这样,结果artifcat将很大,但是不需要其他依赖项。

  3. 更具异国情调,但仍然可以派上用场-使用Spring Boot,它已经借助特殊的插件将所有内容包装到一个工件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java.lang.NoClassDefFoundError:org / apache / spark / Logging

java.lang.NoClassDefFoundError:org / apache / spark / sql / SparkSession

IntelliJ java.lang.NoClassDefFoundError:org / hamcrest / SelfDescribing

java.lang.NoClassDefFoundError:org / lwjgl / LWJGLException

java.lang.NoClassDefFoundError:org / json / JSONObject

java.lang.NoClassDefFoundError:org / springframework / security / authentication / AuthenticationManager

jython java.lang.NoClassDefFoundError:java.lang.NoClassDefFoundError:org / json / simple / JSONObject

java.lang.NoClassDefFoundError:org / jboss / logging / BasicLogger

java.lang.NoClassDefFoundError:org / springframework / web / util / UriTemplateHandler

java.lang.NoClassDefFoundError:org / apache / poi / ss / usermodel / Row

java.lang.NoClassDefFoundError:org / springframework / beans / factory / config / EmbeddedValueResolver

java.lang.NoClassDefFoundError:org / springframework / core / io /资源异常

java.lang.NoClassDefFoundError:org / apache / commons / collections / Transformer

java.lang.NoClassDefFoundError:org / springframework / core / JdkVersion

java.lang.NoClassDefFoundError:org / springframework / core / env / ConfigurableEnvironment

java.lang.NoClassDefFoundError:org / yaml

java.lang.NoClassDefFoundError:org.joda.time.DateTime

Quartz 1.8.5 + OpenLiberty 18.0.0.4/ Websphere Liberty 17.0.0.4 java.lang.NoClassDefFoundError:oracle / sql / BLOB

java.lang.NoClassDefFoundError:org / apache / kafka / clients / producer / Producer

“主要” java.lang.NoClassDefFoundError:org / jdom / JDOMException

java.lang.NoClassDefFoundError:org.apache.hadoop.hbase.HBaseConfiguration

Java.lang.NoClassDefFoundError:org / apache / poi / ss / usermodel / Font

java.lang.NoClassDefFoundError:org / apache / commons / io / FileUtils

使用org.json库的java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError:org / eclipse / jetty / server / NetworkConnector

Glassfish - java.lang.NoClassDefFoundError: org/primefaces/model/UploadedFile

引起:java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IPluginDescriptor

引起:java.lang.NoClassDefFoundError: org/springframework/data/convert/CustomConversions

java.lang.NoClassDefFoundError: org/apache/xerces/jaxp/DocumentBuilderFactoryImpl