如何将Jar库添加到IntelliJ Idea SBT Scala项目?

2w3kk1z5  于 2023-08-03  发布在  IntelliJ IDEA
关注(0)|答案(9)|浏览(151)

我创建了一个IntelliJ Idea SBT Scala项目,如Heiko Seeberger's article所述。
我想添加一个Jar库(joda-time)在这个项目中使用。怎么办?简单地将它们放入项目的/lib中并没有帮助。如果我右键单击Idea项目树中的“External libraries”,“New >”将显示为灰色。

emeijp43

emeijp431#

在项目的IntelliJ Idea窗口中,进入File >> Project structure >> Libraries。单击“库”选项后,将显示两个窗格。在最左侧窗格的顶部,单击绿色的“+”按钮。

hgqdbh6s

hgqdbh6s2#

更好的方法是将非托管依赖项添加到build.sbt中,避免将依赖项管理的一部分留给IDE。
有关如何定义unmanagedBase和unmanagedJars任务的详细信息,请参阅http://www.scala-sbt.org/release/docs/Library-Management.html

w1e3prcc

w1e3prcc3#

在build.sbt中声明

unmanagedJars in Compile += file(Path.userHome+"/Your-Jar-Path/Full-Jar-Name.jar")

字符串
需要的jar将出现在External Library>unmanaged-jars>Full-Jar-Name.jar中。如果jar文件(在提供的路径中)被修改,这也会改变。

yhqotfr8

yhqotfr84#

在Intellij Idea中:

  • 文件>项目结构>库

在Netbeans中:

  • 文件>项目属性>库

在Eclipse中:

  • 右键单击项目>属性> Java构建路径>库
olqngx59

olqngx595#

对于多模块SBT项目(Intellij 2017.3.4,Scala 12.2.4,sbt 1.1.1),接受的解决方案仅在重新启动或项目刷新之前有效。事实上,“项目设置->模块->依赖项”,然后“+”和“JAR或目录”给出警告“模块X是从Sbt导入的。在重新导入“”后,在其配置中所做的任何更改都可能丢失。

可能的解决方法

@zero的建议对我的作用如下:
1.将JAR放入项目的lib目录。
1.在build.sbt中,在lazy var baseSettings = Seq( ... )中添加行unmanagedJars in Compile += file("YourPath/ProjectBla/lib/controlsfx-8.40.14.jar")
1.还是没找到吗在SBT工具窗口中,在模块的 sbt settings 下的 unmanagedBaseunmanagedSourceDirectories(等)中,尝试调用弹出命令“Show value”和“Inspect”几次。不管怎样,它可能会工作。
根据尤金对How can I add unmanaged JARs in sbt-assembly to the final fat JAR?的回答,另一种选择(我没有尝试)是将单独的lib目录添加到每个所需的模块。
希望这些步骤能够解决问题,或者至少有助于调试。

k5hmc34c

k5hmc34c6#

在项目根路径中创建一个lib目录,将JAR文件粘贴到其中,运行sbt reload,关闭项目并再次打开。适用于IntelliJ 2018.2.4和SBT 1.0

xdyibdwo

xdyibdwo7#

转到文件->项目结构->模块
在左窗格中选择模块,然后转到“Dependencies”选项卡
单击+添加JAR或目录

myzjeezk

myzjeezk8#

我们可以做的一种方法是在Intellij中显式添加jar,但这种方法的问题是每次我们构建项目时都需要再次添加它。
第一种方法是:
在Intellij Idea中:
文件>项目结构>库
另一种方法是在本地发布jar

Step 1 : Place the jar in any accessible folder.
Step 2 Create a build.sbt file which contains the detail of the jar.
Step 3 Open cmd to that path and execute command sbt publishLocal.
Step 4 Build your code and you would observe that you are able to access the classes belong to that jar.

字符串
build.sbt看起来像这样:

organization := "com.abc.core"
name := "abc-test-logging"
version := "1.0-SNAPSHOT"
crossPaths := false
packageBin in Compile := file(s"${name.value}-${version.value}.jar")

6psbrbz9

6psbrbz99#

将jar文件添加到lib目录后,在build.sbt中添加这一行
exportJars := true

相关问题