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 解决了这个问题。
我正在使用网站管理员工具 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 解决了这个问题。