Java Jar -java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport from

Java Jar -java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport from

我正在使用网站管理员工具 Java api V3 来查询数据,我的代码在 eclipse 中工作正常但是当我将它导出到 Jar 时我得到以下错误

Exception in thread "main" java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport
    at java.lang.J9VMInternals.prepareClassImpl(Native Method)
    at java.lang.J9VMInternals.prepare(J9VMInternals.java:430)
    at java.lang.Class.getMethod(Class.java:1061)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:506)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:498)
Caused by: java.lang.ClassNotFoundException: com.google.api.client.http.HttpTransport
        at java.net.URLClassLoader.findClass(URLClassLoader.java:665)
        at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:942)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:851)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:82

我的家属如下

我正在 Java6 中编译和导出 jar,并使用 Java7.

执行它

我认为这是一个依赖性问题,但我不知道如何解决??特别是它在 eclipse 中工作但是当我从 eclipse 导出 jar 保持默认配置并选择主要 class 我得到 NoClassDefFoundError ,任何想法提前谢谢你。

当 class com.google.api.client.http.HttpTransport IS 在编译期间可用但 NOT 可用时,您将收到此错误在运行时。

Eclipse 自动将 build class 路径上的 jar 文件添加到您的 runtime 配置的 class 路径.因此,当您来自 Eclipse 运行 时,您不会得到异常。

我假设您 运行 像这样使用命令行: java -cp myjarfile.jar com.my.Main

如果是这种情况,class路径缺少在 Eclipse 中配置的依赖项。要解决这个问题,请按如下方式附加它们中的每一个: java -cp myjarfile.jar;commons-logging-1.1.1.jar;etc... com.my.Main

请注意 class 路径中的分号 ; 用于 Windows。在 Linux.

上使用冒号 :

更新 使用可运行的 jar 文件时,请确保清单文件中的 class 路径设置正确。

https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

我通过从 eclipse 中导出可运行的 Jar 而不是 Jar 解决了这个问题。