java NoClassDefFoundError: com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver when I run jar but not on IDE

java NoClassDefFoundError: com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver when I run jar but not on IDE

您好,我已经处理这个问题一段时间了,但一直没能解决。

所以我有一个简单的 Java 应用程序,它使用 Google 日历 API 从中获取事件。

当我在 IDE(IntelliJ) 上 运行 它工作时没有错误,但是当我从命令行构建和 运行 JAR 时,我得到这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: 
             com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver
    at info.cantu.smartmirror.Main.main(Main.java:44)
Caused by: java.lang.ClassNotFoundException: 
             com.google.api.client.extensions.java6.auth.oauth2.VerificationCodeReceiver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

我使用 maven 导入了所需的库。我想我可能构建的 jar 有误。

这是我的 MANIFEST.MF:

Manifest-Version: 1.0
Main-Class: info.cantu.smartmirror.Main

这是我的 Artifacts 面板的样子:

有什么想法吗?

好的,我明白了。 我做了两件事:

编号 1:我通过转到项目结构 -> 库 ->(选择它) -> 单击减号按钮从项目中删除了 google-oauth-client-jetty:1.20.0。

然后我添加了新版本的库(1.22)this link has the latest version number。我通过 Maven 添加它(在与以前相同的 window 中)单击加号按钮 -> 从 Maven 并搜索它

然而它似乎没有用。

2 号(我认为这成功了):

在 Project Structure -> Artifacts -> The JAR I was trying to build -> 我在右侧选择了有问题的库。但是,不是双击它而是简单地将库放在输出根目录中。我右键单击并选择 "Extract Into Output Root",它提取库中包含的所有单个 jar,并将它们添加到输出根目录。

如下图