【问题标题】:Java Jar -java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport fromJava Jar -java.lang.NoClassDefFoundError: com.google.api.client.http.HttpTransport 来自
【发布时间】:2016-08-14 12:04:00
【问题描述】:

我正在使用网站管理员工具 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 时保持默认配置并选择主类我得到 NoClassDefFoundError ,任何想法都提前谢谢你。

【问题讨论】:

    标签: java google-api-client google-api-java-client google-search-console google-oauth-java-client


    【解决方案1】:

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

    Eclipse 自动将 build 类路径上的 jar 文件添加到您的 runtime 配置的类路径中。因此,当您从 Eclipse 运行时,您不会收到异常。

    我假设您正在从命令行运行,如下所示: java -cp myjarfile.jar com.my.Main

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

    请注意,类路径中的分号 ; 用于 Windows。在 Linux 上使用冒号 :

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

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

    【讨论】:

    • 但是我将所有的 jars 添加到类路径中
    • 请说明如何。复制/粘贴您用于启动应用程序的命令行,例如java -cp ... 这样我们可以提供更好的反馈
    • 解决了我刚刚从 Eclipse 导出了一个可运行的 jar,然后使用 java -jar majar.jar 执行它
    • 太棒了!很高兴你解决了。我已经用 -jar 策略更新了我的答案。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2013-08-28
      • 1970-01-01
      • 2020-04-09
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多