在 eclipse luna 中使用 JGit 时出现 NoClassDefFoundError
Getting NoClassDefFoundError while using JGit in eclipse luna
最近下载了eclipse luna,通过Eclipse安装了EGit插件。我可以在 eclipse/plugins 文件夹中看到下载的 jar 文件。然后我将 JGit jar 文件添加到我的构建路径,我可以在我的 Referenced Libraries 文件夹中看到 class 文件。
但是,当我 运行 项目时,出现以下错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.eclipse.jgit.util.FS.<clinit>(FS.java:112)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.setupWorkTree(BaseRepositoryBuilder.java:620)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.setup(BaseRepositoryBuilder.java:556)
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.build(FileRepositoryBuilder.java:92)
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.create(FileRepositoryBuilder.java:110)
at upload_gen.Launcher.main(Launcher.java:16)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more
我用谷歌搜索了这个问题,它说这可能是因为我的 classpath 不包含 jar 文件。但是当我检查 "run | run configuration" 中的 classpath 选项卡时,它似乎包含了 jar 文件。我还检查了根文件夹中的 .classpath 文件,它看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="lib/org.eclipse.jgit_3.7.0.201502260915-r.jar"/>
<classpathentry kind="var" path="JGIT_JARS"/>
<classpathentry kind="output" path="bin"/>
</classpath>
我还尝试将 JGit jar 文件添加到项目根目录的 lib 文件夹中,如您在上面的 .classpath 文件中所见。
简而言之,我尝试在外部和内部添加 jar 文件,但仍然出现错误。我还尝试使用 class 变量引用 jar 文件,但这也不起作用。编译项目时也没有错误,仅在项目为 运行.
时出错
您可能需要将 slf4j jar 添加到 Eclipse 中的库中。
应该添加的确切 slf4j jar 是:slf4j-api-<version.number>.jar
版本号会随着时间而改变。
您可以在他们的网站 http://www.slf4j.org/download.html 下载 jar。应该类似于 slf4j-<version.number>.zip.
解压缩并将 slf4j-api-<version.number>.jar
添加到您的构建路径。
最近下载了eclipse luna,通过Eclipse安装了EGit插件。我可以在 eclipse/plugins 文件夹中看到下载的 jar 文件。然后我将 JGit jar 文件添加到我的构建路径,我可以在我的 Referenced Libraries 文件夹中看到 class 文件。
但是,当我 运行 项目时,出现以下错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.eclipse.jgit.util.FS.<clinit>(FS.java:112)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.setupWorkTree(BaseRepositoryBuilder.java:620)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.setup(BaseRepositoryBuilder.java:556)
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.build(FileRepositoryBuilder.java:92)
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.create(FileRepositoryBuilder.java:110)
at upload_gen.Launcher.main(Launcher.java:16)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more
我用谷歌搜索了这个问题,它说这可能是因为我的 classpath 不包含 jar 文件。但是当我检查 "run | run configuration" 中的 classpath 选项卡时,它似乎包含了 jar 文件。我还检查了根文件夹中的 .classpath 文件,它看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="lib/org.eclipse.jgit_3.7.0.201502260915-r.jar"/>
<classpathentry kind="var" path="JGIT_JARS"/>
<classpathentry kind="output" path="bin"/>
</classpath>
我还尝试将 JGit jar 文件添加到项目根目录的 lib 文件夹中,如您在上面的 .classpath 文件中所见。 简而言之,我尝试在外部和内部添加 jar 文件,但仍然出现错误。我还尝试使用 class 变量引用 jar 文件,但这也不起作用。编译项目时也没有错误,仅在项目为 运行.
时出错您可能需要将 slf4j jar 添加到 Eclipse 中的库中。
应该添加的确切 slf4j jar 是:slf4j-api-<version.number>.jar
版本号会随着时间而改变。
您可以在他们的网站 http://www.slf4j.org/download.html 下载 jar。应该类似于 slf4j-<version.number>.zip.
解压缩并将 slf4j-api-<version.number>.jar
添加到您的构建路径。