我正在使用网站管理员工具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
,任何想法都会提前感谢你。
答案 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解决了这个问题。