【问题标题】:Eclipse and IvyDE warning: Classpath Dependency Validator MessageEclipse 和 IvyDE 警告:类路径依赖验证器消息
【发布时间】:2013-07-15 09:55:18
【问题描述】:

我在 Eclipse Kepler 中创建了一个新的动态 Web 项目,因为这是我第一次使用 IvyDE,所以我放置了一些依赖项来测试它。这是我的 ivy.xml:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info
        organisation="net.myorg"
        module="mymodule"
        status="integration">
    </info>
    <dependencies>
       <dependency org="org.hibernate" name="hibernate-entitymanager" rev="4.2.3.Final"></dependency>
       <dependency name="log4j" rev="1.2.17" org="log4j"></dependency>
    </dependencies>
</ivy-module>

解决的依赖项,我可以在项目库中看到它们。

但在此之后,我的项目开始发出此警告:

Description Resource    Path    Location    Type
Classpath entry org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=myproject&ivyXmlPath=ivy.xml&confs=*&acceptedTypes=jar%2Cbundle%2Cejb%2Cmaven-plugin&alphaOrder=false&resolveInWorkspace=true&retrievedClasspath=true&retrievedClasspathPattern=lib%2F%5Btype%5Ds%2F%5Bartifact%5D-%5Brevision%5D.%5Bext%5D&retrievedClasspathSync=true&retrievedClasspathTypes=* will not be exported or published. Runtime ClassNotFoundExceptions may result.      myproject       P/myproject Classpath Dependency Validator Message

因此,如果我理解正确,Eclipse 会警告我类路径中的 IvyDE 条目与构建项目中的资源不对应。我想这是预期的行为,如果是这样,有没有办法从项目中删除这个警告,而不禁用每个Classpath Dependency Validator Message

【问题讨论】:

    标签: java eclipse ivyde


    【解决方案1】:

    出现警告信息的原因是Eclipse灵活的项目部署机制不知道是否部署Ivy容器引用的库。所以你需要明确地告诉它你想做什么,将 jars 部署到 WEB-INF/lib 与否。

    如果您需要将此容器部署到 WEB-INF/lib,您需要:

    1. 右键项目进入属性
    2. 选择部署程序集
    3. 点击添加
    4. 选择“Java 构建路径条目”
    5. 选择 Ivy 容器
    6. 点击完成
    7. 确保部署路径设置为“WEB-INF/lib”

    如果您查看 .classpath 设置文件,您会看到它添加了如下条目:

    <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=ivy-test-portlet&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2Fivy-settings.xml&amp;loadSettingsOnDemand=false&amp;ivyUserDir=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2F.ivy&amp;propertyFiles=">
        <attributes>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    

    注意&lt;attributes&gt;...&lt;/attributes&gt; 元素已添加。此外,我的 Ivy 容器路径将与您的不同,因为这是我自己的一个项目的 Ivy 容器路径。

    现在,如果您不需要将 Ivy 容器中包含的这些库部署到您的运行时,那么您需要告诉 Eclipse 在运行时不依赖这些库。您可以通过在 .classpath 文件中添加适当的属性来做到这一点。

    1. 打开 .classpath 文件
    2. 找到 Ivy 容器的入口
    3. 手动添加以下属性元素作为类路径条目的子元素

    最终的元素看起来像这样。您的路径将有不同的选项,但关键部分是属性子元素:

    <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=ivy-test-portlet&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2Fivy-settings.xml&amp;loadSettingsOnDemand=false&amp;ivyUserDir=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2F.ivy&amp;propertyFiles=">
        <attributes>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
    </classpathentry>
    

    无论您选择哪一个,您都已明确告诉 Eclipse 在部署期间如何处理此库容器依赖项。所以现在您可以重新验证项目(右键单击项目并选择“验证”),您应该会看到错误消失。

    【讨论】:

    • 值得注意的是,Eclipse 的“快速修复”工具可以自动完成您描述的两个过程。
    • 警告仍然存在怎么办?我检查了部署路径设置为 WEB-INF/lib 并且 .classpath 具有类路径条目:&lt;classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=Document+Manager&amp;amp;ivyXmlPath=ivy.xml&amp;amp;confs=default&amp;amp;ivySettingsPath=%24%7Bworkspace_loc%3ADocument+Manager%2Fivysettings.xml%7D&amp;amp;loadSettingsOnDemand=false&amp;amp;ivyUserDir=&amp;amp;propertyFiles="&gt; &lt;attributes&gt; &lt;attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/&gt; &lt;/attributes&gt; &lt;/classpathentry&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2021-11-06
    • 2011-12-17
    相关资源
    最近更新 更多