当前位置: 首页 > 知识库问答 >
问题:

IntelliJ找不到通过新模块功能导入的包,然后自动删除导入语句?

廖夜洛
2023-03-14

我是IntelliJ项目的新手。这是我的IntelliJ版本信息:

IntelliJ IDEA 2017.2.1
Build #IU-172.3544.35, built on July 31, 2017
Subscription is active until April 3, 2018
JRE: 1.8.0_152-release-915-b6 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 3.13.0-128-generic

我正在运行LinuxUbuntu 14.04。

我有两个完全不同的项目。我想将驻留在JAR文件中的代码从第一个项目导入第二个项目。

我试着使用“新模块”-

例如,在第一个项目中可以找到以下导入语句,IntelliJ认为该语句有效(没有警告或错误):

import com.github.**messenger4j**.MessengerPlatform;

但是,当我尝试在我的第二个项目中的文件中使用相同的导入时,我收到了“Messenger4j”的“无法解析符号”错误,并且导入语句在某个时候会被自动删除。请注意,我尝试在其中使用import语句的文件是驻留在第二个项目中的groovy源文件,以防这很重要。

此外,如果我查看IntelliJ在“~/. m2”目录中维护的repo存储库,我确实看到了JAR文件。在这里,您可以看到我可以成功地将“. m2”存储库树导航到Messenger4j包:

/home/user9/.m2/repository/com/github/messenger4j$

如何在我的第二个项目中正确导入和使用github.com.messenger4j jar文件?

更新:以下内容似乎使我能够访问驻留在“~/.m2”目录中的所需JAR:

File -> 
Project Structure -> 
Dependencies (tab) -> 
"+" sign in right hand border ->
Library

然后我在库列表中看到JAR文件,通过添加它,我不再得到未解决的符号错误。这是使用IntelliJ/Maven使用外部JAR文件的正确方法吗?

共有2个答案

施刚毅
2023-03-14
羿昊英
2023-03-14

这是使用IntelliJ/Maven使用外部JAR文件的正确方法吗?

不,这不是专业的方式。

如果两个项目都使用Maven,那么它们都有一个POM文件来定义一些东西。假设您有以下设置:

项目A

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>projectA</artifactId>
  <version>1.0-SNAPSHOT</version>

</project>

项目B

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>projectB</artifactId>
  <version>1.0-SNAPSHOT</version>

</project>

如果要在项目B中使用项目A中的类,需要将项目A添加为项目B的依赖项。将项目B的POM文件更改为:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>projectB</artifactId>
  <version>1.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>projectA</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>

</project>

但这不是唯一的事情。为了让项目B使用项目A,Maven需要知道在哪里可以找到它。通过在项目A的根目录中运行mvn clean install命令,在本地Maven存储库中安装项目A,可以解决这个问题。

之后,IntelliJ的Maven将能够找到依赖项,而无需您手动导入项目A。

 类似资料:
  • 问题内容: 导入Numpy后,假设我要删除/删除numpy导入参考 问题答案: 不支持从Python卸载模块。

  • 问题内容: 我有一个 在IPython中,我使用: 然后,我将其更改为: 在IPython中,调用的结果仍然是: 然后我用: 我删除了同一个文件夹中存在的文件夹,但仍然没有运气。 我可以在运行时重新导入更新的代码吗? 问题答案: 对于Python 2.x 对于Python 3.x

  • 我是一个(普通的)Gradle多项目构建,我有一个根,有四个子项目。每个都有自己的版本。gradle和普通版本。gradle,设置。格雷德尔和格雷德尔。根文件夹中的属性。 这一切都像预期的那样构建了一个作品——除了一件事我不明白: 将gradle构建导入IntelliJ时(从外部模型导入)IntelliJ在根级别创建两个单独的模块。一个标记为普通模块,一个标记为分组模块。让我惊讶的是后者——为什么

  • 所以我今天遇到了一个奇怪的问题。我在IntelliJ中的一个模块有一些问题,所以我决定我应该试着把它关闭,然后从一个新的结账中重建它。我从Project窗口中删除了该模块,然后从我的文件系统中删除/重新下载了该模块。 我回到Intellij并尝试导入模块。它让我完成了选择选项的正常步骤,然后似乎成功了。只是它没有重新出现在我的项目窗口中。 我不确定我做了什么,但重新创建整个项目在这一点上不是一个选

  • 我使用命令安装了textblob。但现在我正尝试导入它,并出现以下错误: ModuleNotFoundError:没有名为“textblob”的模块 我在Windows10系统中使用Spyder C:\Users\Diego

  • 我需要在Python中导入一个名为array_queue的模块。我检查了一下,如果我不使用它,就会出现一个提示:“array_queue imported but unused”。但是,如果我使用它并运行该程序,则会出现以下情况: ModuleNotFounderRror:没有名为“array_queue”的模块