【问题标题】:Jars with default package带有默认包的罐子
【发布时间】:2013-02-10 12:08:28
【问题描述】:

我发现了这个问题 -> Import custom libraries in Java

并且@Andy Thomas-Cramer 说“Java 编程简介”中“stdlib.jar”中的类没有包,所以它们在默认包中。

这不是一个坏习惯吗?如果你有没有包的东西,IDE 的自动完成会很慢。这也意味着我们不能使用该 jar 中的任何类,这些类的包与默认包不同?

谁能告诉我如何处理这个问题?

编辑: 我有 2 个罐子,我把它们放在引用库中,它们都有一堆默认包中的类。当我在不同的包中创建类时,默认值 - 比如说 org.myquestion 我不能再从 jar 中访问这些类了。

这真的让我很烦恼...首先我不能创建自己的包并使用 jar 中的任何东西。其次,我的 IDE(我使用 eclipse)的自动完成变得很糟糕——我想它会一次搜索到一些普通的类......我想做的是以某种方式将 jars 放在某个命名空间中......并能够访问它们比如 org.someones.libs.SomeClass

【问题讨论】:

    标签: java import jar classpath


    【解决方案1】:

    使用默认包当然是不好的做法。包对类进行分组并为它们提供访问保护(受保护的、包私有的)并用作唯一的命名空间。

    你总是可以使用每个包中的类,不管它们是不是默认的,你总是可以混合使用。

    【讨论】:

    • 我该如何解决这个问题?鉴于 stdlib.jar 例如女巫使用默认包 - 我可以将它封装在某个包中吗?谢谢!
    • 你真的需要吗?我假设您正在包中组织自己的课程。您是否有一些遇到问题的示例代码?
    • 嗯,我有 2 个 jar,我把它们放在引用的库中,它们都有一堆默认包中的类。当我在不同的包中创建类时,默认值 - 比如说 org.myquestion 我不能再从 jar 中访问这些类。这真的让我很烦恼...首先我无法创建自己的包并使用罐子中的任何东西。其次,我的 IDE(我使用 eclipse)的自动完成变得很糟糕——我想它会一次搜索到一些普通的类......我想做的是以某种方式将 jars 放在某个命名空间中......并能够访问它们像 org.someones.libs.SomeClass
    【解决方案2】:

    下载jar源代码,自己编译成jar,加上你喜欢的包名。这样就解决了你的问题。

    Importing classes inside JAR files that are in the default package

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    【解决方案3】:

    我遇到了和你一样的问题。问题是 jar 文件“stdln.jar”没有命名包,比如说,只有默认包。 基本上,您不能从默认包中导入类,因为导入操作需要包名:

    import packagename.*;
    

    所以只有两种方法可以解决这个问题:

    1. 更简单的一个:不要在你的 src 文件夹中创建包,使用默认包二! stdln.jar 中的每个类都会自动导入到您的 src 中。 像这样: enter image description here

    2. 尝试使用命名包创建自己的 jar 文件,并将所有类文件复制到新创建的 jar 文件中。 由于 stdln.jar 仅用于教育,因此您要选择哪个并不重要。在实际开发中,我们从不使用默认命名包,因为这不是一个真正的好习惯,总是会导致一些令人困惑的东西。 希望这会对你有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多