【问题标题】:Accessing classes in default package in a JAR file访问 JAR 文件中默认包中的类
【发布时间】:2011-04-10 18:22:14
【问题描述】:

我有一个 Java 应用程序,Java 文件位于一个名为 app 的包中。我在类路径中添加了一个 JAR 文件。 JAR 文件中的所有类都在默认包中。

从我的 Java 应用程序中,我无法访问此 JAR 文件的类。只有当我将我的应用程序文件放在默认包中时,我才能看到 JAR 文件中的类。这是为什么呢?

【问题讨论】:

  • Giovanni 可能已经继续前进,但我遇到了同样的问题。我正在使用 eclipse 并将 jar 文件添加到 java 构建路径。我想它们在某种程度上是在默认包下,因为只有默认包中的文件才能访问 jar 文件中的方法。有没有办法添加 jar 文件,以便所有包都可以通过 Project>Properties>JavaBuildPath 或更改 .classpath 文件来访问 jar 文件?

标签: java jar package


【解决方案1】:

默认包中的类对包内的类不可见。

当类在不同的包中时,你基本上需要import 类。但是由于在默认包中import 类是不可能的,所以唯一的解决方案是将这些类放在一个包中。

当你想重用类时,总是把类放在一个包中。

【讨论】:

    【解决方案2】:

    您不能再从默认包中import。 (您曾经可以在 Sun 的早期 javac 实现中使用,但这在语言规范中是不允许的。)明显的解决方案:

    • 尽可能不要使用默认包。将所有类、接口和枚举移动到命名包中。 [好]
    • 将打包的类移到默认包中。 [不好]
    • 通过反射访问类。 [可怕]

    【讨论】:

    • 我试图用我需要的类制作一个 jar 到一个包中,但我无法从我的应用程序中看到这些类
    • @Giovanni 我认为您将需要一个简单但完整的示例来说明您正在尝试做的事情。
    猜你喜欢
    • 2011-06-26
    • 2011-06-26
    • 2010-09-21
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多