gpt4 book ai didi

java - 当 JAR 没有包时 IntelliJ : How to use external JAR's as a library,

转载 作者:行者123 更新时间:2023-12-01 18:23:11 24 4
gpt4 key购买 nike

此问题与为 Coursera 上提供的普林斯顿算法 2 类(class)设置 IntelliJ 环境有关。

我正在尝试将外部库(作为 JAR)导入到我的项目中。我可以通过 Project Structure -> Libraries -> New Project Library(绿色加号) 从“Project Structure”菜单添加 JAR 。现在我在 src 下有一个类 WordNet.java,但我只能使用默认包(即没有包)访问我的外部库。我想创建包来组织我的代码,但如何从包内导入外部库?有没有一个简单的解决方案可以直接导入 JAR,或者我可以使用 Maven 或 Grails?为我的所有选项提供一个简单的答案就太好了。

我有以下项目结构,其中包含 src 目录、src/assignemnt1 包和 External Libraries/stdlib/stdlib.jar外部库:

intelliJ project

我的类使用外部库WordNet.java,其代码如下:

public class WordNet {

// constructor takes the name of the two input files
public WordNet(String synsets, String hypernyms) {
In read_synsets = new In(synsets);
read_synsets.hasNextLine();

}
}

其中Instdlib.jar下的一个类。在默认包下,我可以使用 In 而无需导入。不幸的是,如果我在 src/assignment1 下有 WordNet.java (在 assignment1 包内),我似乎无法导入 In 和 IntelliJ 也不提供导入建议。有没有办法在 src/assignment1 包内的 WordNet.java 中使用 stdlib.jar ?或者我必须继续使用默认包吗?

最佳答案

Java language specification禁止从未命名的或默认的包中导入任何内容。

A type in an unnamed package (§7.4.2) has no canonical name, so the requirement for a canonical name in every kind of import declaration implies that (a) types in an unnamed package cannot be imported, and (b) static members of types in an unnamed package cannot be imported. As such, §7.5.1, §7.5.2, §7.5.3, and §7.5.4 all require a compile-time error on any attempt to import a type (or static member thereof) in an unnamed package.

为了从默认包外部访问这些类而不修改库,您需要使用反射。

此外,当您的类位于默认包中时不需要导入的原因是,当它们位于同一包中时您不需要导入它们。

关于java - 当 JAR 没有包时 IntelliJ : How to use external JAR's as a library,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27070318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com