【问题标题】:Is there a way to use external libraries in IntelliJ without downloading their .jars?有没有办法在 IntelliJ 中使用外部库而不下载它们的 .jars?
【发布时间】:2021-06-09 17:54:04
【问题描述】:

我正在尝试使用edu.stanford.nlp.trees.GrammaticalStructure 在 IntelliJ 中编写一个独立的 Java 应用程序。因此,我已经导入了模块:

import edu.stanford.nlp.trees.GrammaticalStructure;

目前,Intellij 无法识别这个和许多其他导入的外部库(无法解析符号),也无法自动下载/导入它们。

有没有一种方法可以使用 GrammaticalStructure 类,而无需下载整个 Stanford CoreNLP .jar 并将其作为库添加到项目中?这个问题也适用于其他依赖项,因为我想使用其他外部库但尽可能避免包含它们的 .jar 文件(以最小化最终应用程序的大小,因为它将是独立的)。不幸的是,我发现的所有解决方案都提出了这一点。

抱歉,如果我忽略了一些基本设置或设置步骤,我已经有一段时间没有使用 Java 了。

非常感谢任何帮助。

【问题讨论】:

  • 为了使用它们,你必须拥有它们。
  • 如果您的目标是优化分布大小,您可以使用 ProGuard 或 Maven Shade 插件和 minimizeJar 选项,请参阅stackoverflow.com/questions/9518400/…

标签: java intellij-idea


【解决方案1】:

如果你想使用它意味着你想执行其中的代码。运行时应该如何执行没有的代码?编译器应该如何知道代码是如何定义的(例如类的样子)?这简直是​​不可能的。如果您想使用代码,您必须将其提供给编译器以及运行时。

如果您只是不想将所有代码包含到您的应用程序中,您需要访问源代码并选择您需要的类,或者您需要某种 JAR 最小化器,如 @CrazyCoder建议。

【讨论】:

  • 他不想使用这些罐子。另一种选择是获取这些库的源代码并将它们包含到项目中,手动删除他不需要的源文件。或者通过混淆器/插件从最终的 jar 中去除未使用的类。
  • 如果他不想使用,那导入有什么意义呢?
  • 看起来他只需要一些类(比如构建和运行代码所需的最少依赖项),而不是可能包含他的代码不会使用的类的整个 jar。
  • 但这仍然意味着他需要该代码。
  • 他说:“我想使用其他外部库,但尽可能避免包含它们的 .jar 文件(以最小化最终应用程序的大小,因为它将是独立的)。” .这意味着他可以使用依赖项提供的代码,但不能使用可能包含在 jar 中且他的应用程序不需要的额外代码。关键词似乎是“尽可能”。
猜你喜欢
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2012-08-24
  • 2022-01-23
  • 2017-12-04
  • 2022-10-02
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多