首页 > 解决方案 > 导出到 jar 时缺少 Eclipse 中可用的库

问题描述

我有一个main在 Eclipse 中运行良好的项目(带有 的 Java 应用程序),但是当我将它导出到(打包的)可运行 Jar 并尝试从命令行启动它时,java -jar我收到以下错误消息:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.NoClassDefFoundError: com/github/javafaker/Faker
    at jultävlingar2020.Jultävlingar2020.useChrome(Jultävlingar2020.java:154)
    at jultävlingar2020.Jultävlingar2020.main(Jultävlingar2020.java:57)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: com.github.javafaker.Faker
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 7 more

包含似乎有问题,javafaker但在 Eclipse 中使用它可以正常工作。

该项目是基于 Gradle 的,在我的文件夹中Project and External dependencies我有javafaker-1.0.2.jar.

我的 build.gradle 看起来像这样:

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:28.2-jre'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
    
    // Selenium
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59'
    
    // Javafaker
    implementation 'com.github.javafaker:javafaker:1.0.2'
}

我该如何解决?

标签: javaeclipsejarnoclassdeffounderrorclassnotfoundexception

解决方案


推荐阅读