【问题标题】:How can I import the same classes from a package [closed]如何从包中导入相同的类[关闭]
【发布时间】:2024-01-18 07:30:01
【问题描述】:

我有一个 jar 文件,其中包含 org.apache 包和许多不同的类,如 Socket...当我将这个 Jar 包含到我的项目中时,它宁愿使用(导入)现有的 java 包“org.apache”和不是我罐子里的那个。我可以说,我在libs 目录中添加了 jar。如何确保使用 jar 包中的自定义类(而不是 java 类)。

如果您还有其他问题,请随时提问。

【问题讨论】:

    标签: java android jar import


    【解决方案1】:

    类路径为要搜索的 JAR 和目录指定一个 顺序。如果真正的 apache JAR 在类路径上位于您的 JAR 之前,那么类加载器将首先查看真正的 JAR 文件。如果它在那里找到一个类,它将使用该版本而不是您的版本。

    如何确保 jar 包中的自定义类...?

    确保它位于类路径的开头。


    由于您使用 Android 和 Eclipse 执行此操作,因此您需要“以 android 方式”执行依赖项。根据我对"Dealing with dependencies in Android projects" 的阅读,您需要将 Apache JAR 文件放入 libs 目录的“库项目”中。我链接到的页面暗示您当前项目的 lib/*.jar 文件会自动出现在类路径的首位......并且它并没有说您可以更改它。


    应该指出,将替代版本的 Apache 类放入您的项目是“可怕的 hack”,它值得工作。正确的程序是:

    • 如果这些 Apache 类是 Android 平台的一部分,则根本不要更改它们!

    • 否则,请克隆相关的 Apache 源代码树,对其进行更改,重新构建 Apache JAR,然后改用该 JAR。

    【讨论】:

    • 那么,我如何在我的 Eclipse 中设置顺序。
    • 但是当我尝试创建库项目时......它做同样的事情,因为它也有 android jar......
    • 意思是说它也包含java库...
    • 我不明白你在说什么。您是否将 Apache JAR 放入 Library Project 中?您是否将库项目添加为项目的依赖项
    • 没有。我没有这样做,但我想说......我有 amazons3 jar 文件,其中有 apache 包,我想使用这个包,但我无法导入这个包......当我尝试导入时,会自动导入 java apache 包...那么我该如何使用它。
    【解决方案2】:

    我认为这取决于您的 IDE。在 Eclipse 中,您可以设置引用文件(JAR、类)的顺序。 如果您从命令行执行工具,请按“升序”顺序将文件添加到 -cp 标志。

    否则请给我们更多细节。

    【讨论】:

    • 那么,我如何在我的 Eclipse 中设置顺序。
    • 右键单击您的项目:属性 >(在树中)Java 构建路径 >(选项卡)顺序和导出。你介意点赞我的回答吗?