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

时间:2016-04-21 10:37:02

标签: java google-api-client google-api-java-client google-webmaster-tools google-oauth-java-client

我正在使用网站管理员工具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

我的家属如下

enter image description here

enter image description here

我正在Java6中编译和导出jar并使用Java7执行它。

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

2 个答案:

答案 0 :(得分:1)

如果在编译期间com.google.api.client.http.HttpTransport IS 类可用,但在运行时 NOT 可用,则会出现此错误。

Eclipse会自动将 build 类路径上的jar文件添加到运行时配置的类路径中。因此,当您从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

答案 1 :(得分:0)

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