Import 用IntelliJ IDEA创建Java库文件

Import 用IntelliJ IDEA创建Java库文件,import,intellij-idea,java,Import,Intellij Idea,Java,我正在尝试创建一个可用于其他项目的库。我已经编写了一个类,其中包含几个静态方法来完成一些工作。我想尝试一下,但是我不能使用导入的JAR文件 我已将代码编译为工件,并从“out”文件夹中取出JAR文件,然后将其复制到另一个项目中。之后,我进入“项目结构”选项卡“库”,按下加号按钮。我已经找到了JAR文件并选择了它,后来IDEA要求我指定依赖项,所以我这样做了,但当我想在代码中使用它时,我不能这样做。它甚至不能进口 你知道为什么它忽略了我的图书馆吗?谢谢 我应该怎么做才能用IntelliJ IDE

我正在尝试创建一个可用于其他项目的库。我已经编写了一个类,其中包含几个静态方法来完成一些工作。我想尝试一下,但是我不能使用导入的JAR文件

我已将代码编译为工件,并从“out”文件夹中取出JAR文件,然后将其复制到另一个项目中。之后,我进入“项目结构”选项卡“库”,按下加号按钮。我已经找到了JAR文件并选择了它,后来IDEA要求我指定依赖项,所以我这样做了,但当我想在代码中使用它时,我不能这样做。它甚至不能进口

你知道为什么它忽略了我的图书馆吗?谢谢


我应该怎么做才能用IntelliJ IDEA创建一个可用于其他项目的JAR库?您遇到了一个非常常见的依赖项管理问题

在我看来,真正的答案是使用Maven、Ant或Gradle(我自己也会使用Gradle)这样的构建系统。你要做的是手工的,很难复制,而且很脆弱

每次进行更改时,您都必须通过手动步骤来创建一个新的JAR。你真的不明白你的依赖性

要完全采用最佳实践,您需要一个真正的构建系统,该系统发布到一个持续集成服务器,该服务器负责编译和运行测试。成功完成测试后,jar将发布到工件服务器(Nexus/Artifactory)


与您共享的人将通过构建系统通过声明对您的JAR的依赖关系来使用JAR。

我发现了我的问题所在。当我创建这个库时,我试图使它变得简单。不幸的是,这太简单了。我有一个包,里面有一个类,它被编译成一个JAR。结构如下:

foo
 |
 |_ MyLib.java 
但是,为了使用创建的JAR库中的类,必须将它们放在包中。这意味着如果我有:

foo
 |
 |_bar
 |  |
 |  |_MyInnerLib.java
 |
 |_MyOuterLib.java

我能够从MyInnerLib导入和使用方法,但MyOuterLib既不可访问也不可导入。这就是我犯的错误。

你的描述有点太模糊了。我可以建议您下载一些第三方库(例如,来自ApacheCommons的东西)并尝试在您的项目中使用它吗?我只想把问题缩小到jar的创建或者它在另一个项目中的使用。我已经准备好以同样的方式使用JSch for SSH连接,它可以完美地工作。然而,我的图书馆被忽略了。我不能使用主类中的方法,也不能在我的库中创建该类的任何实例..奇怪。。。在IDEA中创建JAR库并将其导入到项目中并没有什么特别之处,除非您已经编写了(至少在一般情况下)。我刚刚试着重现你描述中的步骤,没有任何问题。尝试检查是否未意外地将库的全部或部分标记为排除目录。您是指
main
method吗?不,不应该申报你用的是哪种包装?尽量不要使用默认的空包名称。此外,如果您有包,则必须正确导入类。还要检查它是公共的、受保护的、包的还是私有的。谢谢@phil提供的信息,这是非常有用的建议,但是我现在不考虑对我正在尝试创建的JAR进行任何更新。问题是,在导入到项目中之后,我无法访问JAR中的类。“foo”是您的JAR的名称吗(即,它是foo.JAR)?问题背后的原因可能是这样的(引用自emphasis mine):“未命名包(§7.4.2)中的类型没有规范名称,因此每种导入声明中对规范名称的要求意味着(A)无法导入未命名包中的类型,以及(b)无法导入未命名包中类型的静态成员。“。