首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >项目中新依赖项的NoClassDefFoundError

项目中新依赖项的NoClassDefFoundError
EN

Stack Overflow用户
提问于 2012-07-19 15:18:30
回答 1查看 1.5K关注 0票数 2

我正在使用Eclipse中的一个项目,该项目有两个项目:一个产品和一个名为视图的插件。

我将SVNKit v1.3.5添加为视图的pom.xml文件中的依赖项,如下所示:

代码语言:javascript
复制
<dependency>
    <groupId>org.tmatesoft.svnkit</groupId>
    <artifactId>svnkit</artifactId>
    <version>1.3.5</version>
    <scope>compile</scope>
</dependency>

在视图插件上执行Maven 2 Tools > Generate Eclipse构件(从缓存)之后,构建是成功的,因为它从repo1.maven.org/Maven 2/.等下载SVNKit。

我继续并在视图插件上执行Maven 2 Tools > Generate OSGi Bundle Manifest和Copy Resources,构建就成功了。

然后,我在产品上运行Maven 2 Tools > Generate并设置Target平台,并像对其他项目一样设置运行配置。

该产品被设置为eclipse应用程序,插件被验证时没有错误。

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

我运行该产品,它运行良好,直到我到达UI弹出窗口,它需要从SVNKit的任何类文件。窗口不弹出,控制台显示:

代码语言:javascript
复制
!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回购,就像它指向其他依赖项一样:

代码语言:javascript
复制
<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的清单文件比我引用的库中的其他文件要短得多:

代码语言:javascript
复制
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_15-b04 (Sun Microsystems Inc.)

其他库有更多的信息,如导出包、包版本、包名、导入包等.这会是问题吗?如果是这样的话,我尝试过Google-ing为SVNKit 1.3.5提供一个清单包文件,但是没有找到任何东西。

EN

回答 1

Stack Overflow用户

发布于 2012-07-19 15:22:14

尝试将作用域更改为<scope>provided</scope>而不是compile

默认作用域是编译,这意味着在运行时不存在依赖关系。为此,您使用提供的作用域。更多关于Apache的Maven依赖关系简介上maven依赖项中的作用域的信息。

希望这能解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11563965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档