如何在eclipse类路径中优先考虑jar文件?

时间:2011-09-30 08:32:55

标签: java eclipse java-ee classpath

有一个类文件TagAttributeInfo,它位于我的两个jar文件之下。

j2ee-6.1.jar,servlet-api-2.3.jar .

现在我需要从j2ee-6.1.jar调用该类,但在运行时,它正在使用我不想要的servlet-api-2.3.jar类。 任何人都可以帮我在类路径中优先处理jar文件,这样我就会优先考虑j2ee-6.1.jar

7 个答案:

答案 0 :(得分:16)

按类路径顺序向上移动(右键单击项目,选择Build Path,然后选择Configure Build Path,然后选择Order and Export)

答案 1 :(得分:6)

  • 进入项目属性>构建路径
  • 订单和导出标签中,找到j2ee-6.1.jar,然后按向上按钮将其按类路径顺序向上移动。继续按向上,直到它高于servlet-api-2.3.jar
  • 最后按OK

答案 2 :(得分:3)

它将在类路径中找到的第一个jar,它将具有它正在寻找的类。因此,您可以通过将jar放在类路径的开头来确定类的优先级。

你在Eclipse中如何做到这一点我不确定,但是可能有一些与类路径上的jar相对应的项目依赖项列表,希望你可以在该列表上订购元素并将jar放在最佳。尝试在项目设置面板中查找它。

答案 3 :(得分:3)

  1. 删除servlet-api-2.3.jar,你不需要它。
  2. 或将j2ee-6.1.jar移动到比lib列表中的servlet-api-2.3.jar更高的位置。

答案 4 :(得分:1)

我不知道它是否是规范的一部分,但是当我在过去完成此操作时,在类路径中更早地放置“更高”的优先级jar。

答案 5 :(得分:1)

您确定需要两个jar文件吗?

无论如何,在Build Path对话框中,您可以指定要搜索的jar文件的顺序。

答案 6 :(得分:1)

这些jar中只有一个应该在你的类路径中,以便能够编译你的类。但是在运行时,jar将在您的应用程序服务器类路径中,并且您将无法将其替换为另一个。

如果您的容器是JEE6容器,那么它使用servlet 3.0并且servlet-api-2.3.jar已过时,不应该在类路径中。如果您的容器只支持servlet api 2.3,那么您将无法使用此容器中jee6 jar的类。