gpt4 book ai didi

java - 项目中新依赖项的 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-11-29 09:12:23 25 4
gpt4 key购买 nike

我正在使用 Eclipse 中的一个项目,该项目有 2 个项目;一个产品和一个名为 View 的插件。

我在 View 的 pom.xml 文件中添加了 SVNKit v1.3.5 作为依赖项:

<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>1.3.5</version>
<scope>compile</scope>
</dependency>

在 View 插件上执行 Maven 2 Tools > Generate Eclipse Artifacts (from cache) 后,构建成功,因为它从 repo1.maven.org/maven2/...等下载 SVNKit。

我继续并在 View 插件上执行 Maven 2 Tools > Generate OSGi Bundle Manifest and Copy Resources,构建成功。

然后我在产品上运行 Maven 2 Tools > Generate and Set Target Platform,并像我对其他项目所做的那样设置运行配置。

产品设置为eclipse应用,插件验证无误。

我可以编写代码,它可以检测类并且在编译时没有问题;问题是程序在运行时需要这些类。

我运行该产品并且它工作正常,直到我到达 UI 弹出窗口,该窗口需要来自 SVNKit 的任何类文件。窗口根本不弹出,控制台显示:

!ENTRY org.eclipse.ui 4 0 2012-07-19 10:07:10.242
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NoClassDefFoundError: org/tmatesoft/svn/core/SVNException
...
Caused by: java.lang.ClassNotFoundException: org.tmatesoft.svn.core.SVNException

我已经尝试解决这个问题,但无论我尝试过什么“修复”,都会一遍又一遍地遇到同样的错误。类路径是正确的,因为它指向 m2 存储库,就像它指向其他依赖项一样:

<classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/svnkit/1.3.5/svnkit-1.3.5.jar" sourcepath="M2_REPO/org/tmatesoft/svnkit/svnkit/1.3.5/svnkit-1.3.5-sources.jar">
<attributes>
<attribute value="jar:file:/<details omitted>/.m2/repository/org/tmatesoft/svnkit/svnkit/1.3.5/svnkit-1.3.5-javadoc.jar!/" name="javadoc_location"/>
</attributes>
</classpathentry>
<classpathentry kind="var" path="M2_REPO/org/tmatesoft/svnkit/trilead-ssh2/build213-svnkit-1.3-patch/trilead-ssh2-build213-svnkit-1.3-patch.jar"/>
<classpathentry kind="var" path="M2_REPO/org/tmatesoft/sqljet/sqljet/1.0.4/sqljet-1.0.4.jar" sourcepath="M2_REPO/org/tmatesoft/sqljet/sqljet/1.0.4/sqljet-1.0.4-sources.jar"/>

如有任何建议,我们将不胜感激。提前致谢!

编辑:与我引用的库中的其他文件相比,SVNKit v1.3.5 的 list 文件非常短:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_15-b04 (Sun Microsystems Inc.)

其他库有更多信息,例如 export-package、bundle version、bundle name、import-packages 等...这可能是问题所在吗?如果是这样,我已经尝试用 Google 搜索 SVNKit 1.3.5 的 list 包文件,但没有找到任何东西。

最佳答案

尝试将范围更改为<scope>provided</scope>而不是 compile .

默认作用域是编译,这意味着依赖在运行时不存在。为此,您使用提供的 范围。关于 Apache 的 Introduction to Maven Dependencies 的 Maven 依赖项范围的更多信息.

希望这能解决您的问题。

关于java - 项目中新依赖项的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com