Eclipse 及其如何处理 JARS —— 奇怪的情况

标签 eclipse apache jar velocity

尝试对 Apache 的 Velocity 引擎进行一些小的更改。

这是我能做和不能做的事情。

我正在更改合并函数()。我所做的改变并不重要,因为我还没有做到。 ;) 现在我正在准备执行 println 语句触发。

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

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

上帝创造的绿色地球可能是什么原因造成的?这让我发疯。今天我花了一整天的时间试图找出问题所在。如果无法更改速度,我就无法继续。 Eclipse 运行速度文件的具体代码库是什么?

提前非常感谢! :)

最佳答案

这是构建类路径运行时类路径之间混淆的典型案例。

您的构建类路径包含对您的Java项目的引用(包含对Velocity的更改)...但我敢打赌您的运行时类路径包含对原始Velocity JAR文件的引用.

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


好的,删除 Velocity.jar 后文件来自WEB-INF/lib ,执行以下操作:

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

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

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

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

返回Deployment Assembly对话框,您现在应该看到 MyVelocity映射到WEB-INF/lib/MyVelocity.jar .

单击“确定”。

我们所做的是将 MyVelocity 映射为 WEB-INF/lib依赖性。通过这样做,MyVelocity也会自动添加到编译时构建路径中 - 因此非常重要的是您不要自己将其添加到构建路径中,从而导致重复的构建路径条目。 p>

现在一切都应该适合你了。如果您有任何问题,请告诉我。

附注如果您正在开发独立的 WAR 项目,这些说明是正确的;如果您的 WAR 文件是 EAR 的一部分,您可能希望(在某些情况下,例如 MyVelocity 被 EAR 内的其他 J2EE 模块使用)映射 MyVelocity以不同的方式,到一个共同的位置;如果是这样,请告诉我,我将进一步详细说明。

关于Eclipse 及其如何处理 JARS —— 奇怪的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3886530/

相关文章:

linux - 无法在 Linux Unity 上使用 Eclipse

java - 如何在客户端和服务器之间共享类实体?

eclipse tomcat 7.0

java - 如何从当前运行的 jar 中复制文件

java - 无法使用 android :Theme. AppCompat.Light

java - FileInputStream 只读取文件中的第一个单词

apache - 试图在 Apache : error 13 (search permissions missing) 上运行 Flask

iphone - 仅用于 api 访问的 ssl 和证书问题

apache - Nutch - 作业失败 - 错误 mapred.FileOutputCommitter - Mkdirs 无法创建文件

java - 将项目导出到 jar 文件时如何包含图标