代码之家  ›  专栏  ›  技术社区  ›  bobber205

Eclipse及其如何处理JARS-Odd情况

  •  2
  • bobber205  · 技术社区  · 15 年前

    试图对Apache的速度引擎做一些小的改变。

    这是我能做和不能做的。

    我正在更改merge函数()。我所做的改变无关紧要,因为我还没做。;)现在我正准备启动println语句。

    我有两个要merge()的引用。如果我将函数改为mergeBAD(),Eclipse会告诉我它找不到merge()。有道理吧?我曾经在我的类build path中包含下载velocity时获得的两个jar,但是我使用提供的src文件创建了一个项目,并将该项目用作依赖项。同样,当我将其重命名为mergeBAD时,is找不到merge()这一事实给了我希望。

    但是当我运行我的web服务器时,点击一个断点并进入合并调用,它找不到源代码!我再次将它指向项目,它“找到”了源代码,我所做的任何更改(特别是println语句)都没有命中。他们只是被跳过。:(

    上帝的绿色地球上有什么可能导致这一切?我快疯了。我今天花了一整天的时间想弄清楚出了什么事。如果不能改变速度我就不能继续。eclipse运行velocity文件的代码库到底是什么?

    非常感谢提前这么做!:)

    1 回复  |  直到 15 年前
        1
  •  3
  •   Isaac    15 年前

    这是一个典型的混淆 生成类路径 和 运行时类路径 .

    你的 生成类路径 包含对Java项目的引用(包含对Velocity的更改)。。。但我敢打赌 运行时类路径 保存对原始Velocity JAR文件的引用。

    管理 生成类路径 和 运行时类路径 在Eclipse下的Web项目中(WTP-Web工具项目)在过去的几个WTP版本中经历了巨大的变化。我们可以引导你通过。如果您将Velocity的JAR文件添加到 WEB-INF/lib ,让我们从移除它们开始。


    好的,在你移除 Velocity.jar 文件来源 WEB-INF/库 ,请执行以下操作:

    1. 右键单击项目,选择“属性”。
    2. 转到“Java构建路径”。选择“projects”选项卡并确保定制的Velocity项目(我们称之为“MyVelocity”)是 不是 在那里。
    3. 仍然在“Java构建路径”中,选择“库”选项卡并确保没有Velocity JAR。

    按照上述步骤,我们清除了您的Web应用程序中对MyVelocity(您的项目)或任何其他Velocity JAR的任何引用。

    有趣的部分来了。我将指导您如何正确地将Java项目作为依赖项“添加”到Web项目中。

    1. 仍在项目的属性中,转到 Deployment Assembly .
    2. 点击“添加”。
    3. 选择“项目”,然后选择“下一步”。
    4. 选择“MyVelocity”,并确保选中“Web库引用”复选框。
    5. 单击“完成”。

    回到 展开装置 对话框,现在您应该看到 MyVelocity 映射到 WEB-INF/lib/MyVelocity.jar .

    单击“确定”。

    我们所做的就是把MyVelocity映射为 WEB-INF/库 附属国。这样做, MyVelocity公司 也会自动添加到编译时生成路径-因此 非常 重要的是,不要自己将其添加到生成路径中,从而导致重复的生成路径条目。

    现在一切都应该对你有用了。如果你有什么问题请告诉我。

    P、 如果您正在开发一个独立的WAR项目,那么这些说明是正确的;如果您的WAR文件是EAR的一部分,那么您可能希望(在某些情况下,例如 MyVelocity公司 由EAR中的其他J2EE模块使用)来映射 MyVelocity公司 不同的是,在一个共同的地点;如果是这样的话,让我知道,我会进一步阐述。